zoukankan      html  css  js  c++  java
  • ElasticSearch练习

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.6.2</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.hundsun</groupId>
        <artifactId>elastic-search</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>elastic-search</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.elasticsearch</groupId>
                <artifactId>elasticsearch</artifactId>
                <version>7.13.2</version>
            </dependency>
    
    
            <!--ES高级客户端-->
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>elasticsearch-rest-high-level-client</artifactId>
                <version>7.13.2</version>
            </dependency>
    
            <!--Json工具-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.79</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <excludes>
                            <exclude>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                            </exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>
    package com.hundsun.elasticsearch;
    
    import com.alibaba.fastjson.JSON;
    import com.hundsun.elasticsearch.domain.User;
    import org.apache.http.HttpHost;
    import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
    import org.elasticsearch.action.bulk.BulkRequest;
    import org.elasticsearch.action.bulk.BulkResponse;
    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.action.index.IndexRequest;
    import org.elasticsearch.action.index.IndexResponse;
    import org.elasticsearch.action.search.SearchRequest;
    import org.elasticsearch.action.search.SearchResponse;
    import org.elasticsearch.action.support.master.AcknowledgedResponse;
    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.client.indices.CreateIndexRequest;
    import org.elasticsearch.client.indices.CreateIndexResponse;
    import org.elasticsearch.client.indices.GetIndexRequest;
    import org.elasticsearch.client.indices.GetIndexResponse;
    import org.elasticsearch.common.unit.Fuzziness;
    import org.elasticsearch.common.xcontent.XContentType;
    import org.elasticsearch.index.query.BoolQueryBuilder;
    import org.elasticsearch.index.query.QueryBuilders;
    import org.elasticsearch.index.query.RangeQueryBuilder;
    import org.elasticsearch.search.SearchHit;
    import org.elasticsearch.search.SearchHits;
    import org.elasticsearch.search.builder.SearchSourceBuilder;
    import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
    import org.elasticsearch.search.sort.SortOrder;
    import org.junit.jupiter.api.Test;
    import org.springframework.boot.test.context.SpringBootTest;
    
    import java.io.IOException;
    
    @SpringBootTest
    class ElasticSearchApplicationTests {
    
    
        /**
         * 创建索引
         *
         * @throws IOException
         */
        @Test
        void createIndex() throws IOException {
    
            // 创建ES高级客户端
    
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 创建索引
            CreateIndexRequest request = new CreateIndexRequest("mkm");
            CreateIndexResponse response = esClient.indices().create(request, RequestOptions.DEFAULT);
            System.out.println(response.index()); // 创建的索引名
            System.out.println(response.isAcknowledged()); //是否创建索引成功
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 查询索引
         *
         * @throws IOException
         */
        @Test
        void getIndex() throws IOException {
    
            // 创建ES高级客户端
    
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 查询索引
            GetIndexRequest request = new GetIndexRequest("mkm");
            GetIndexResponse response = esClient.indices().get(request, RequestOptions.DEFAULT);
    
            System.out.println(response.getAliases()); // 查询别名
            System.out.println(response.getMappings());//查询映射结构
            System.out.println(response.getSettings());//查询配置
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 删除索引
         *
         * @throws IOException
         */
        @Test
        void deleteIndex() throws IOException {
    
            // 创建ES高级客户端
    
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            //删除索引
            DeleteIndexRequest request = new DeleteIndexRequest("mkm");
            AcknowledgedResponse response = esClient.indices().delete(request, RequestOptions.DEFAULT);
            System.out.println(response.isAcknowledged());//是否删除成功
    
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 创建文档数据
         *
         * @throws IOException
         */
        @Test
        void createDocument() throws IOException {
    
            // 准备数据
            User user = new User();
            user.setMid(1001L);
            user.setMName("张三");
            user.setMAge(100);
            user.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
    
            // 创建ES高级客户端
    
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 将数据转为Json字符串,插入数据
            IndexRequest indexRequest = new IndexRequest();
            indexRequest.index("mkm").id("mkm-" + user.getMid()); // 创建id
            indexRequest.source(JSON.toJSONString(user), XContentType.JSON);
    
            IndexResponse response = esClient.index(indexRequest, RequestOptions.DEFAULT);
            System.out.println(response.getResult());//结果
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 修改文档数据
         *
         * @throws IOException
         */
        @Test
        void updateDocument() throws IOException {
    
            // 准备数据
            User user = new User();
            user.setMid(1001L);
            user.setMName("李四");
            user.setMAge(200);
            user.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
    
            // 创建ES高级客户端
    
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 将数据转为Json字符串,修改数据
    
            UpdateRequest updateRequest = new UpdateRequest();
            updateRequest.index("mkm").id("mkm-" + user.getMid());
            updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);
    
            UpdateResponse response = esClient.update(updateRequest, RequestOptions.DEFAULT);
            System.out.println(response.getResult());//结果
            System.out.println(response.getIndex()); //索引
            System.out.println(response.getId());//id
    
            // 关闭Es
            esClient.close();
    
        }
    
    
        /**
         * 查询文档数据
         *
         * @throws IOException
         */
        @Test
        void getDocument() throws IOException {
    
            // 准备数据
            User user = new User();
            user.setMid(1001L);
            user.setMName("李四");
            user.setMAge(200);
            user.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            // 创建ES高级客户端
    
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 查询文档数据
            GetRequest getRequest = new GetRequest();
            getRequest.index("mkm").id("mkm-" + user.getMid());
    
            GetResponse response = esClient.get(getRequest, RequestOptions.DEFAULT);
            System.out.println(response.getSourceAsString()); //文档数据【字符串】
            System.out.println(response.getSourceAsMap()); //文档数据【Map结构】
            System.out.println(response.getIndex());//索引
            System.out.println(response.getId());//id
    
            // 关闭Es
            esClient.close();
    
        }
    
    
        /**
         * 删除文档数据
         *
         * @throws IOException
         */
        @Test
        void deleteDocument() throws IOException {
    
            // 准备数据
            User user = new User();
            user.setMid(1001L);
            user.setMName("李四");
            user.setMAge(200);
            user.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            // 创建ES高级客户端
    
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            //删除文档数据
            DeleteRequest deleteRequest = new DeleteRequest();
            deleteRequest.index("mkm").id("mkm-" + user.getMid());
            DeleteResponse response = esClient.delete(deleteRequest, RequestOptions.DEFAULT);
            System.out.println(response.toString());
    
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 批量创建文档数据
         *
         * @throws IOException
         */
    
        @Test
        void batchCreateDocument() throws IOException {
    
            // 准备数据
            User user1 = new User();
            user1.setMid(1002L);
            user1.setMName("王五");
            user1.setMAge(200);
            user1.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            User user2 = new User();
            user2.setMid(1003L);
            user2.setMName("赵六");
            user2.setMAge(300);
            user2.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            User user3 = new User();
            user3.setMid(1004L);
            user3.setMName("田七");
            user3.setMAge(400);
            user3.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            User user4 = new User();
            user4.setMid(1005L);
            user4.setMName("张三");
            user4.setMAge(500);
            user4.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            // 创建ES高级客户端
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            //批量创建文档数据
            BulkRequest bulkRequest = new BulkRequest();
    
            bulkRequest.add(new IndexRequest().index("mkm").id("mkm-" + user1.getMid()).source(JSON.toJSONString(user1), XContentType.JSON));
            bulkRequest.add(new IndexRequest().index("mkm").id("mkm-" + user2.getMid()).source(JSON.toJSONString(user2), XContentType.JSON));
            bulkRequest.add(new IndexRequest().index("mkm").id("mkm-" + user3.getMid()).source(JSON.toJSONString(user3), XContentType.JSON));
            bulkRequest.add(new IndexRequest().index("mkm").id("mkm-" + user4.getMid()).source(JSON.toJSONString(user4), XContentType.JSON));
    
            BulkResponse response = esClient.bulk(bulkRequest, RequestOptions.DEFAULT);
            System.out.println(response.getTook());//耗时
    
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 批量修改文档数据
         *
         * @throws IOException
         */
        @Test
        void batchUpdateDocument() throws IOException {
    
            // 准备数据
            User user1 = new User();
            user1.setMid(1002L);
            user1.setMName("王五Copy");
            user1.setMAge(200);
            user1.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            User user2 = new User();
            user2.setMid(1003L);
            user2.setMName("赵六Copy");
            user2.setMAge(300);
            user2.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            User user3 = new User();
            user3.setMid(1004L);
            user3.setMName("田七Copy");
            user3.setMAge(400);
            user3.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            User user4 = new User();
            user4.setMid(1005L);
            user4.setMName("张三Copy");
            user4.setMAge(500);
            user4.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            // 创建ES高级客户端
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            //批量修改文档数据
            BulkRequest bulkRequest = new BulkRequest();
            bulkRequest.add(new UpdateRequest().index("mkm").id("mkm-" + user1.getMid()).doc(JSON.toJSONString(user1), XContentType.JSON));
            bulkRequest.add(new UpdateRequest().index("mkm").id("mkm-" + user2.getMid()).doc(JSON.toJSONString(user2), XContentType.JSON));
            bulkRequest.add(new UpdateRequest().index("mkm").id("mkm-" + user3.getMid()).doc(JSON.toJSONString(user3), XContentType.JSON));
            bulkRequest.add(new UpdateRequest().index("mkm").id("mkm-" + user4.getMid()).doc(JSON.toJSONString(user4), XContentType.JSON));
    
            BulkResponse response = esClient.bulk(bulkRequest, RequestOptions.DEFAULT);
            System.out.println(response.getTook());//耗时
    
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 批量删除文档数据
         *
         * @throws IOException
         */
        @Test
        void batchDeleteDocument() throws IOException {
    
            // 准备数据
            User user1 = new User();
            user1.setMid(1002L);
            user1.setMName("王五");
            user1.setMAge(200);
            user1.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            User user2 = new User();
            user2.setMid(1003L);
            user2.setMName("赵六");
            user2.setMAge(300);
            user2.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            User user3 = new User();
            user3.setMid(1004L);
            user3.setMName("田七");
            user3.setMAge(400);
            user3.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            User user4 = new User();
            user4.setMid(1005L);
            user4.setMName("张三");
            user4.setMAge(500);
            user4.setMAddress("杭州市滨江区江南大道1688号恒生电子股份有限公司");
    
            // 创建ES高级客户端
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            //批量删除文档数据
            BulkRequest bulkRequest = new BulkRequest();
    
            bulkRequest.add(new DeleteRequest().index("mkm").id("mkm-" + user1.getMid()));
            bulkRequest.add(new DeleteRequest().index("mkm").id("mkm-" + user2.getMid()));
            bulkRequest.add(new DeleteRequest().index("mkm").id("mkm-" + user3.getMid()));
            bulkRequest.add(new DeleteRequest().index("mkm").id("mkm-" + user4.getMid()));
    
            BulkResponse response = esClient.bulk(bulkRequest, RequestOptions.DEFAULT);
            System.out.println(response.getTook());//耗时
    
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 高级查询【全量查询】
         *
         * @throws IOException
         */
        @Test
        void matchAllDocument() throws IOException {
    
            // 创建ES高级客户端
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 高级查询【全量查询】
            SearchRequest searchRequest = new SearchRequest();
            searchRequest.indices("mkm");
            searchRequest.source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));
    
            SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
            System.out.println(response.getTook());//耗时
            SearchHits hits = response.getHits();
            System.out.println(hits.getTotalHits()); //总条数
            for (SearchHit hit : hits.getHits()) {
                System.out.println(hit.getSourceAsString());//查询结果
            }
    
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 高级查询【单条件查询】
         *
         * @throws IOException
         */
        @Test
        void matchDocument() throws IOException {
    
            // 创建ES高级客户端
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 高级查询【条件查询】
            SearchRequest searchRequest = new SearchRequest();
            searchRequest.indices("mkm");
    
            //searchRequest.source(new SearchSourceBuilder().query(QueryBuilders.termQuery("mName","张")));            // 1.单条件查询
    
            //searchRequest.source(new SearchSourceBuilder().query(QueryBuilders.termsQuery("mName","张","王","田")));  // 2.单条件IN查询
    
            SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
            System.out.println(response.getTook());//耗时
            SearchHits hits = response.getHits();
            System.out.println(hits.getTotalHits());//总条数
            for (SearchHit hit : hits.getHits()) {
                System.out.println(hit.getSourceAsString());//查询结果
            }
    
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 高级查询【范围查询】
         *
         * @throws IOException
         */
        @Test
        void rangeQueryDocument() throws IOException {
    
            // 创建ES高级客户端
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 高级查询【条件查询】
            SearchRequest searchRequest = new SearchRequest();
            searchRequest.indices("mkm");
    
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("mAge");
            rangeQuery.gte(300); // 大于等于
            rangeQuery.lte(500); // 小于等于
            // rangeQuery.lt()   // 小于
            // rangeQuery.gt()   // 大于
    
            sourceBuilder.query(rangeQuery);
            searchRequest.source(sourceBuilder);
    
            SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
            System.out.println(response.getTook());//耗时
            SearchHits hits = response.getHits();
            System.out.println(hits.getTotalHits());//总条数
            for (SearchHit hit : hits.getHits()) {
                System.out.println(hit.getSourceAsString());//查询结果
            }
    
    
            // 关闭Es
            esClient.close();
    
        }
    
    
        /**
         * 高级查询【多条件查询--并且,或者】
         *
         * @throws IOException
         */
        @Test
        void boolQueryDocument() throws IOException {
    
            // 创建ES高级客户端
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 高级查询【条件查询】
            SearchRequest searchRequest = new SearchRequest();
            searchRequest.indices("mkm");
    
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); //多条件查询
            // boolQuery.must(QueryBuilders.matchQuery("mName","张")); // 并且
            // boolQuery.must(QueryBuilders.matchQuery("mAddress","杭州")); // 并且
            // boolQuery.must(QueryBuilders.matchQuery("mAge",500)); // 并且
    
    
            boolQuery.should(QueryBuilders.matchQuery("mName", "张")); // 或者
            boolQuery.should(QueryBuilders.matchQuery("mid", 1002)); // 或者
            boolQuery.should(QueryBuilders.matchQuery("mAge", 300)); // 或者
    
            sourceBuilder.query(boolQuery);
            searchRequest.source(sourceBuilder);
    
            SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
            System.out.println(response.getTook());//耗时
            SearchHits hits = response.getHits();
            System.out.println(hits.getTotalHits());//总条数
            for (SearchHit hit : hits.getHits()) {
                System.out.println(hit.getSourceAsString());//查询结果
            }
    
    
            // 关闭Es
            esClient.close();
    
        }
    
    
        /**
         * 高级查询【模糊查询】
         *
         * @throws IOException
         */
        @Test
        void likeQueryDocument() throws IOException {
    
            // 创建ES高级客户端
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 高级查询【模糊查询】
            SearchRequest searchRequest = new SearchRequest();
            searchRequest.indices("mkm");
    
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.query(QueryBuilders.fuzzyQuery("mName", "Co").fuzziness(Fuzziness.TWO));
            searchRequest.source(sourceBuilder);
    
            SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
            System.out.println(response.getTook());//耗时
            SearchHits hits = response.getHits();
            System.out.println(hits.getTotalHits());//总条数
            for (SearchHit hit : hits.getHits()) {
                System.out.println(hit.getSourceAsString());//查询结果
            }
    
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 高亮查询
         *
         * @throws IOException
         */
        @Test
        void highlightQueryDocument() throws IOException {
    
            // 创建ES高级客户端
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 高级查询【模糊查询】
            SearchRequest searchRequest = new SearchRequest();
            searchRequest.indices("mkm");
    
    
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
    
            sourceBuilder.query(QueryBuilders.termQuery("mName", "张"));
    
            HighlightBuilder highlightBuilder = new HighlightBuilder();
            highlightBuilder.preTags("<font color='red'>"); // 设置高亮标签
            highlightBuilder.postTags("</font>"); // 设置高亮标签
            highlightBuilder.field("mName");  // 设置高亮字段
            sourceBuilder.highlighter(highlightBuilder);
    
            searchRequest.source(sourceBuilder);
    
            SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
            System.out.println(response.getTook());//耗时
            SearchHits hits = response.getHits();
            System.out.println(hits.getTotalHits());//总条数
            for (SearchHit hit : hits.getHits()) {
                System.out.println(hit.getSourceAsString());//查询结果
            }
    
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 分页排序
         *
         * @throws IOException
         */
        @Test
        void pageSortDocument() throws IOException {
    
            // 创建ES高级客户端
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 高级查询
            SearchRequest searchRequest = new SearchRequest();
            searchRequest.indices("mkm");
    
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.query(QueryBuilders.matchAllQuery()); //设置查询条件
            sourceBuilder.from(2).size(2); // 设置分页
            sourceBuilder.sort("mAge", SortOrder.DESC);  //设置排序字段,降序
            searchRequest.source(sourceBuilder);
    
            SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
            System.out.println(response.getTook());//耗时
            SearchHits hits = response.getHits();
            System.out.println(hits.getTotalHits());//总条数
            for (SearchHit hit : hits.getHits()) {
                System.out.println(hit.getSourceAsString());//查询结果
            }
    
    
            // 关闭Es
            esClient.close();
    
        }
    
        /**
         * 过滤响应结果字段
         *
         * @throws IOException
         */
        @Test
        void filterDocument() throws IOException {
    
            // 创建ES高级客户端
            RestHighLevelClient esClient = new RestHighLevelClient(
                    RestClient.builder(new HttpHost("localhost", 9200, "http"))
            );
    
    
            // 高级查询
            SearchRequest searchRequest = new SearchRequest();
            searchRequest.indices("mkm");
    
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.query(QueryBuilders.matchAllQuery()); //设置查询条件
            String[] includes = {}; //设置结果包含字段
            String[] excludes = {"mid"}; //设置结果排除字段
            sourceBuilder.fetchSource(includes, excludes);
            searchRequest.source(sourceBuilder);
    
            SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
            System.out.println(response.getTook());//耗时
            SearchHits hits = response.getHits();
            System.out.println(hits.getTotalHits());//总条数
            for (SearchHit hit : hits.getHits()) {
                System.out.println(hit.getSourceAsString());//查询结果
            }
    
    
            // 关闭Es
            esClient.close();
    
        }
    }
  • 相关阅读:
    Redis为什么使用单进程单线程方式也这么快
    数据库表设计五大范式所解决的问题
    数据库范式那些事
    线上Java程序导致服务器CPU占用率过高的问题排除过程
    对分布式事务及两阶段提交、三阶段提交的理解
    About the diffrence of wait timed_wait and block in java
    Linux io Model
    阻塞与非阻塞,同步与异步
    深入理解JAVA I/O系列六:Linux中的IO模型(转载的文章非常值得学习)
    真正的Maven经常使用命令
  • 原文地址:https://www.cnblogs.com/w1440199392/p/15734323.html
Copyright © 2011-2022 走看看