赞
踩
在操作Elastic Search首先需要导入依赖
- <dependencies>
- <dependency>
- <groupId>org.elasticsearch</groupId>
- <artifactId>elasticsearch</artifactId>
- <version>7.8.0</version>
- </dependency>
- <!-- elasticsearch的客户端 -->
- <dependency>
- <groupId>org.elasticsearch.client</groupId>
- <artifactId>elasticsearch-rest-high-level-client</artifactId>
- <version>7.8.0</version>
- </dependency>
- <!-- elasticsearch依赖2.x的log4j -->
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-api</artifactId>
- <version>2.8.2</version>
- </dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-core</artifactId>
- <version>2.8.2</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.9.9</version>
- </dependency>
- <!-- junit单元测试 -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- </dependency>
- </dependencies>
- public static void main(String[] args) throws Exception {
-
- // 创建ES客户端
- RestHighLevelClient esClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost("localhost", 9200, "http"))
- );
-
- // 关闭ES客户端
- esClient.close();
- }
- public static void main(String[] args) throws Exception {
-
- // 创建ES客户端
- RestHighLevelClient esClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost("localhost", 9200, "http"))
- );
-
- // 创建索引
- CreateIndexRequest request = new CreateIndexRequest("user");
- CreateIndexResponse createIndexResponse =
- esClient.indices().create(request, RequestOptions.DEFAULT);
-
- // 响应状态
- boolean acknowledged = createIndexResponse.isAcknowledged();
- System.out.println("索引操作 :" + acknowledged);
-
- esClient.close();
- }
- public static void main(String[] args) throws Exception {
-
- // 创建ES客户端
- RestHighLevelClient esClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost("localhost", 9200, "http"))
- );
-
- // 删除索引
- DeleteIndexRequest request = new DeleteIndexRequest("user");
-
- AcknowledgedResponse response = esClient.indices().delete(request, RequestOptions.DEFAULT);
-
- // 响应状态
- System.out.println(response.isAcknowledged());
-
- esClient.close();
- }
- public static void main(String[] args) throws Exception {
-
- // 创建ES客户端
- RestHighLevelClient esClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost("localhost", 9200, "http"))
- );
-
- // 查询索引
- GetIndexRequest request = new GetIndexRequest("user");
-
- GetIndexResponse getIndexResponse =
- esClient.indices().get(request, RequestOptions.DEFAULT);
-
- // 响应状态
- System.out.println(getIndexResponse.getAliases());
- System.out.println(getIndexResponse.getMappings());
- System.out.println(getIndexResponse.getSettings());
-
- esClient.close();
- }
- //实体类
- public class User {
- private String name;
- private String sex;
- private Integer age;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getSex() {
- return sex;
- }
-
- public void setSex(String sex) {
- this.sex = sex;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
- }
- //main方法
- public static void main(String[] args) throws Exception {
-
- RestHighLevelClient esClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost("localhost", 9200, "http"))
- );
-
- // 插入数据
- IndexRequest request = new IndexRequest();
- request.index("user").id("1001");
-
- User user = new User();
- user.setName("zhangsan");
- user.setAge(30);
- user.setSex("男");
-
- // 向ES插入数据,必须将数据转换位JSON格式
- ObjectMapper mapper = new ObjectMapper();
- String userJson = mapper.writeValueAsString(user);
- request.source(userJson, XContentType.JSON);
-
- IndexResponse response = esClient.index(request, RequestOptions.DEFAULT);
-
- System.out.println(response.getResult());
-
- esClient.close();
- }
- public static void main(String[] args) throws Exception {
-
- //获取ES客户端
- RestHighLevelClient esClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost("localhost", 9200, "http"))
- );
-
- //指定删除对象
- DeleteRequest request = new DeleteRequest();
- request.index("user").id("1001");
-
- //删除数据
- DeleteResponse response = esClient.delete(request, RequestOptions.DEFAULT);
- System.out.println(response.toString());
-
- esClient.close();
- }
- public static void main(String[] args) throws Exception {
-
- //获取ES对象
- RestHighLevelClient esClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost("localhost", 9200, "http"))
- );
-
- // 查询数据
- GetRequest request = new GetRequest();
- request.index("user").id("1001");
- GetResponse response = esClient.get(request, RequestOptions.DEFAULT);
-
- System.out.println(response.getSourceAsString());
-
- //关闭ES客户端
- esClient.close();
- }
- public static void main(String[] args) throws Exception {
-
- RestHighLevelClient esClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost("localhost", 9200, "http"))
- );
-
- // 1. 查询索引的所有数据
- SearchRequest request = new SearchRequest();
- request.indices("user");
-
- // 构造查询条件
- SearchSourceBuilder builder = new SearchSourceBuilder();
- builder.query(QueryBuilders.matchAllQuery());
-
- request.source(builder);
-
- SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
-
- SearchHits hits = response.getHits();
-
- System.out.println(response.getTook());
- System.out.println(hits.getTotalHits());
- Iterator<SearchHit> iterator = hits.iterator();
- while (iterator.hasNext()) {
- SearchHit hit = iterator.next();
- System.out.println(hit.getSourceAsString());
- }
-
- esClient.close();
- }
- public static void main(String[] args) throws Exception {
-
- RestHighLevelClient esClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost("localhost", 9200, "http"))
- );
-
- //1. 查询索引中全部的数据
- SearchRequest request = new SearchRequest();
- request.indices("user");
-
- request.source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));
-
- SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
-
- SearchHits hits = response.getHits();
-
- System.out.println(hits.getTotalHits());
- System.out.println(response.getTook());
-
- for ( SearchHit hit : hits ) {
- System.out.println(hit.getSourceAsString());
- }
-
- //2. 条件查询 : termQuery
- SearchRequest request = new SearchRequest();
- request.indices("user");
-
- request.source(new SearchSourceBuilder().query(QueryBuilders.termQuery("age", 30)));
- SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
-
- SearchHits hits = response.getHits();
-
- System.out.println(hits.getTotalHits());
- System.out.println(response.getTook());
-
- for ( SearchHit hit : hits ) {
- System.out.println(hit.getSourceAsString());
- }
-
- //3. 分页查询
- SearchRequest request = new SearchRequest();
- request.indices("user");
-
- SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
- // (当前页码-1)*每页显示数据条数
- builder.from(2);
- builder.size(2);
- request.source(builder);
- SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
-
- SearchHits hits = response.getHits();
-
- System.out.println(hits.getTotalHits());
- System.out.println(response.getTook());
-
- for ( SearchHit hit : hits ) {
- System.out.println(hit.getSourceAsString());
- }
-
- // 4. 查询排序
- SearchRequest request = new SearchRequest();
- request.indices("user");
-
- SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
- //
- builder.sort("age", SortOrder.DESC);
-
- request.source(builder);
- SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
-
- SearchHits hits = response.getHits();
-
- System.out.println(hits.getTotalHits());
- System.out.println(response.getTook());
-
- for ( SearchHit hit : hits ) {
- System.out.println(hit.getSourceAsString());
- }
-
- // 5. 过滤字段
- SearchRequest request = new SearchRequest();
- request.indices("user");
-
- SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
- //
- String[] excludes = {"age"};
- String[] includes = {};
- builder.fetchSource(includes, excludes);
-
- request.source(builder);
- SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
-
- SearchHits hits = response.getHits();
-
- System.out.println(hits.getTotalHits());
- System.out.println(response.getTook());
-
- for ( SearchHit hit : hits ) {
- System.out.println(hit.getSourceAsString());
- }
-
- // 6. 组合查询
- SearchRequest request = new SearchRequest();
- request.indices("user");
-
- SearchSourceBuilder builder = new SearchSourceBuilder();
- BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
-
- //boolQueryBuilder.must(QueryBuilders.matchQuery("age", 30));
- //boolQueryBuilder.must(QueryBuilders.matchQuery("sex", "男"));
- //boolQueryBuilder.mustNot(QueryBuilders.matchQuery("sex", "男"));
- boolQueryBuilder.should(QueryBuilders.matchQuery("age", 30));
- boolQueryBuilder.should(QueryBuilders.matchQuery("age", 40));
-
- builder.query(boolQueryBuilder);
-
- request.source(builder);
- SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
-
- SearchHits hits = response.getHits();
-
- System.out.println(hits.getTotalHits());
- System.out.println(response.getTook());
-
- for ( SearchHit hit : hits ) {
- System.out.println(hit.getSourceAsString());
- }
-
- // 7. 范围查询
- SearchRequest request = new SearchRequest();
- request.indices("user");
-
- SearchSourceBuilder builder = new SearchSourceBuilder();
- RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age");
-
- rangeQuery.gte(30);
- rangeQuery.lt(50);
-
- builder.query(rangeQuery);
-
- request.source(builder);
- SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
-
- SearchHits hits = response.getHits();
-
- System.out.println(hits.getTotalHits());
- System.out.println(response.getTook());
-
- for ( SearchHit hit : hits ) {
- System.out.println(hit.getSourceAsString());
- }
-
- //8. 模糊查询
- SearchRequest request = new SearchRequest();
- request.indices("user");
-
- SearchSourceBuilder builder = new SearchSourceBuilder();
- builder.query(QueryBuilders.fuzzyQuery("name", "wangwu").fuzziness(Fuzziness.TWO));
-
- request.source(builder);
- SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
-
- SearchHits hits = response.getHits();
-
- System.out.println(hits.getTotalHits());
- System.out.println(response.getTook());
-
- for ( SearchHit hit : hits ) {
- System.out.println(hit.getSourceAsString());
- }
-
- // 9. 高亮查询
- SearchRequest request = new SearchRequest();
- request.indices("user");
-
- SearchSourceBuilder builder = new SearchSourceBuilder();
- TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("name", "zhangsan");
-
- HighlightBuilder highlightBuilder = new HighlightBuilder();
- highlightBuilder.preTags("<font color='red'>");
- highlightBuilder.postTags("</font>");
- highlightBuilder.field("name");
-
- builder.highlighter(highlightBuilder);
- builder.query(termsQueryBuilder);
-
- request.source(builder);
- SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
-
- SearchHits hits = response.getHits();
-
- System.out.println(hits.getTotalHits());
- System.out.println(response.getTook());
-
- for ( SearchHit hit : hits ) {
- System.out.println(hit.getSourceAsString());
- }
-
- // 10. 聚合查询
- SearchRequest request = new SearchRequest();
- request.indices("user");
-
- SearchSourceBuilder builder = new SearchSourceBuilder();
-
- AggregationBuilder aggregationBuilder = AggregationBuilders.max("maxAge").field("age");
- builder.aggregation(aggregationBuilder);
-
- request.source(builder);
- SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
-
- SearchHits hits = response.getHits();
-
- System.out.println(hits.getTotalHits());
- System.out.println(response.getTook());
-
- for ( SearchHit hit : hits ) {
- System.out.println(hit.getSourceAsString());
- }
-
- // 11. 分组查询
- SearchRequest request = new SearchRequest();
- request.indices("user");
-
- SearchSourceBuilder builder = new SearchSourceBuilder();
-
- AggregationBuilder aggregationBuilder = AggregationBuilders.terms("ageGroup").field("age");
- builder.aggregation(aggregationBuilder);
-
- request.source(builder);
- SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
-
- SearchHits hits = response.getHits();
-
- System.out.println(hits.getTotalHits());
- System.out.println(response.getTook());
-
- for ( SearchHit hit : hits ) {
- System.out.println(hit.getSourceAsString());
- }
-
- //关闭ES客户端
- esClient.close();
- }
- public static void main(String[] args) throws Exception {
-
- RestHighLevelClient esClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost("localhost", 9200, "http"))
- );
-
- // 查询索引
- GetIndexRequest request = new GetIndexRequest("user");
-
- GetIndexResponse getIndexResponse =
- esClient.indices().get(request, RequestOptions.DEFAULT);
-
- // 响应状态
- System.out.println(getIndexResponse.getAliases());
- System.out.println(getIndexResponse.getMappings());
- System.out.println(getIndexResponse.getSettings());
-
- esClient.close();
- }
- public static void main(String[] args) throws Exception {
-
- RestHighLevelClient esClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost("localhost", 9200, "http"))
- );
-
- // 批量插入数据
- BulkRequest request = new BulkRequest();
-
- request.add(new IndexRequest().index("user").id("1001").source(XContentType.JSON, "name", "zhangsan", "age",30,"sex","男"));
- request.add(new IndexRequest().index("user").id("1002").source(XContentType.JSON, "name", "lisi", "age",30,"sex","女"));
- request.add(new IndexRequest().index("user").id("1003").source(XContentType.JSON, "name", "wangwu", "age",40,"sex","男"));
- request.add(new IndexRequest().index("user").id("1004").source(XContentType.JSON, "name", "wangwu1", "age",40,"sex","女"));
- request.add(new IndexRequest().index("user").id("1005").source(XContentType.JSON, "name", "wangwu2", "age",50,"sex","男"));
- request.add(new IndexRequest().index("user").id("1006").source(XContentType.JSON, "name", "wangwu3", "age",50,"sex","男"));
- request.add(new IndexRequest().index("user").id("1007").source(XContentType.JSON, "name", "wangwu44", "age",60,"sex","男"));
- request.add(new IndexRequest().index("user").id("1008").source(XContentType.JSON, "name", "wangwu555", "age",60,"sex","男"));
- request.add(new IndexRequest().index("user").id("1009").source(XContentType.JSON, "name", "wangwu66666", "age",60,"sex","男"));
-
- BulkResponse response = esClient.bulk(request, RequestOptions.DEFAULT);
- System.out.println(response.getTook());
- System.out.println(response.getItems());
-
- esClient.close();
- }
- public static void main(String[] args) throws Exception {
-
- RestHighLevelClient esClient = new RestHighLevelClient(
- RestClient.builder(new HttpHost("localhost", 9200, "http"))
- );
-
- // 批量删除数据
- BulkRequest request = new BulkRequest();
-
- request.add(new DeleteRequest().index("user").id("1001"));
- request.add(new DeleteRequest().index("user").id("1002"));
- request.add(new DeleteRequest().index("user").id("1003"));
-
- BulkResponse response = esClient.bulk(request, RequestOptions.DEFAULT);
- System.out.println(response.getTook());
- System.out.println(response.getItems());
-
- esClient.close();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。