• ElasticSearch中基础API操作


    1:首先我们需要连接ElasticSearch客户端,需要一个连接操作: RestHighLevelClient

    package com.atguigu.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    
    public class ESTest_Client {
        public static void main(String[] args) throws Exception {
    
            // 创建ES客户端
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
            // 关闭ES客户端
            esClient.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    2:建立的客户端后,我们需要先进行索引的创建,查询,删除操作:

    2.1:创建索引: CreateIndexRequest 响应: esClient.indices().create

    package com.atguigu.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.client.indices.CreateIndexRequest;
    import org.elasticsearch.client.indices.CreateIndexResponse;
    
    public class ESTest_Index_Create {
        public static void main(String[] args) throws Exception {
    
            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();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    请添加图片描述

    2.2:查询索引: GetIndexRequest 响应: esClient.indices().get

    package com.atguigu.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.client.indices.CreateIndexRequest;
    import org.elasticsearch.client.indices.CreateIndexResponse;
    import org.elasticsearch.client.indices.GetIndexRequest;
    import org.elasticsearch.client.indices.GetIndexResponse;
    
    public class ESTest_Index_Search {
        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();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    2.3:删除索引: DeleteIndexRequest 响应: esClient.indices().delete

    package com.atguigu.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
    import org.elasticsearch.action.support.master.AcknowledgedResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.client.indices.GetIndexRequest;
    import org.elasticsearch.client.indices.GetIndexResponse;
    
    public class ESTest_Index_Delete {
        public static void main(String[] args) throws Exception {
    
            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();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    3:索引创建好后我们需要将索引里面插入文档数据,包过数据的查询删除等等操作

    3.1:将数据插入索引: IndexRequest 响应:esClient.index

    3.1.1:首先建立一个实体类存放我们要插入的数据类:User请添加图片描述

    #3.1.2:然后向对应的索引中插入数据:这里的步骤分三步:

    (1):new出索引,并指向我们要插入数据的索引: request.index("user").id("1001");

    请添加图片描述

    (2):将数据插入到实体类,并要穿换成json格式:

    请添加图片描述

    (3):默认响应:IndexResponseesClient.index
       IndexResponse response = esClient.index(request, RequestOptions.DEFAULT);
    
    • 1
    package com.atguigu.es.test;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.index.IndexRequest;
    import org.elasticsearch.action.index.IndexResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.client.indices.GetIndexRequest;
    import org.elasticsearch.client.indices.GetIndexResponse;
    import org.elasticsearch.common.xcontent.XContentType;
    
    public class ESTest_Doc_Insert {
        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();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    3.2:修改索引中数据:UpdateRequest 响应: esClient.update

    修改索引中的数据:跟上面类似,还是要先定位到哪个索引然后进行修改:

    package com.atguigu.es.test;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.index.IndexRequest;
    import org.elasticsearch.action.index.IndexResponse;
    import org.elasticsearch.action.update.UpdateRequest;
    import org.elasticsearch.action.update.UpdateResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.common.xcontent.XContentType;
    
    public class ESTest_Doc_Update {
        public static void main(String[] args) throws Exception {
    
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
            // 修改数据
            UpdateRequest request = new UpdateRequest();
            request.index("user").id("1001");
            request.doc(XContentType.JSON, "sex", "女");
    
            UpdateResponse response = esClient.update(request, RequestOptions.DEFAULT);
    
            System.out.println(response.getResult());
    
            esClient.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    3.3:查询索引中的数据: GetRequest 响应: esClient.get

    package com.atguigu.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.get.GetRequest;
    import org.elasticsearch.action.get.GetResponse;
    import org.elasticsearch.action.update.UpdateRequest;
    import org.elasticsearch.action.update.UpdateResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.common.xcontent.XContentType;
    
    public class ESTest_Doc_Get {
        public static void main(String[] args) throws Exception {
    
            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());
    
            esClient.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    3.4:删除索引中的文档(数据): DeleteRequest 响应:esClient.delete

    package com.atguigu.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.delete.DeleteRequest;
    import org.elasticsearch.action.delete.DeleteResponse;
    import org.elasticsearch.action.get.GetRequest;
    import org.elasticsearch.action.get.GetResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    
    public class ESTest_Doc_Delete {
        public static void main(String[] args) throws Exception {
    
            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();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    3.5:批量插入数据: BulkRequest 响应: esClient.bulk

    相当于就是在一个BulkRequest里面包含很多IndexRequest().index

    package com.atguigu.es.test;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.bulk.BulkRequest;
    import org.elasticsearch.action.bulk.BulkResponse;
    import org.elasticsearch.action.index.IndexRequest;
    import org.elasticsearch.action.index.IndexResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.common.xcontent.XContentType;
    
    public class ESTest_Doc_Insert_Batch {
        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();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    3.6:批量删除: BulkRequest 响应:esClient.bulk,相当于一个 BulkRequest里面包含很多DeleteRequest().index

    package com.atguigu.es.test;
    
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.bulk.BulkRequest;
    import org.elasticsearch.action.bulk.BulkResponse;
    import org.elasticsearch.action.delete.DeleteRequest;
    import org.elasticsearch.action.index.IndexRequest;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.common.xcontent.XContentType;
    
    public class ESTest_Doc_Delete_Batch {
        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();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    3.7:全量查询:SearchRequest 响应:esClient.search

    注意变化: request.indices("user");

    请添加图片描述

       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());
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3.8:条件查询:与全量查询变化:QueryBuilders.termQuery("age", 30)

            // 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());
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3.9:分页查询 builder.from(2); builder.size(2);

        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());
            }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3.10:查询排序: builder.sort("age", SortOrder.DESC);

            // 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());
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3.11:过滤字段 builder.fetchSource(includes, excludes);

            // 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());
            }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    3.12:组合查询 :

         // 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());
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    3.13:范围查询 : QueryBuilders.rangeQuery("age");

            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());
            }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    3.14:模糊查询:QueryBuilders.fuzzyQuery("name","wangwu").fuzziness(Fuzziness.TWO)

    Fuzziness.TWO:意思就是字符差两个就可以查出来,代表模糊的范围

            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());
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    3.15:高亮查询:

            SearchRequest request = new SearchRequest();
            request.indices("user");
    
            SearchSourceBuilder builder = new SearchSourceBuilder();
            TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("name", "zhangsan");
    
            HighlightBuilder highlightBuilder = new HighlightBuilder();
            highlightBuilder.preTags("");
            highlightBuilder.postTags("");
            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());
            }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    3.16:聚合查询:(求最大最小)对age字段取最大:maxAge

            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());
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3.17:分组查询 terms(“ageGroup”).field(“age”);: 根据年龄分组

            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());
            }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    celery命令参数详解及在django中的用法
    华为与思科路由器静态路由配置
    设计模式之装饰器模式
    [题] 年会抽奖 #错排问题 #递推
    【Dubbo】入门搭建
    EasyPHP-Devserver-17安装和配置mantisBT
    【微信小程序】运行机制和更新机制
    fontforge将.woff文件转换为.ttf文件,查看字体对应关系
    Linux 2.0总结
    【C++笔试强训计划】第一天
  • 原文地址:https://blog.csdn.net/justleavel/article/details/128064927