• ElasticSearch学习笔记(三)


    ElasticSearch学习笔记(三)

    1.Springboot集成ElasticSearch

    1.1创建工程

    父模块创建maven工程,子模块创建springboot工程(创建时,勾选elasticsearch依赖)。
    在这里插入图片描述

    在这里插入图片描述在这里插入图片描述

    1.2配置ElasticSearch

    ElasticSearchClientConfig配置类

    
    @Configuration
    public class ElasticSearchClientConfig {
        @Bean
        public RestHighLevelClient restHighLevelClient(){
            RestHighLevelClient client=new RestHighLevelClient(
                    RestClient.builder(
                            new HttpHost("localhost",9200,"http")
                    )
            );
            return client;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    2.Elasticsearch在springboot里的增删改查

    2.1创建索引

    @SpringBootTest
    class EsApiApplicationTests {
    
        @Autowired
        private RestHighLevelClient client;
    
        /**
         * 测试索引的创建
         */
        @Test
        void contextLoads() throws IOException {
            //创建索引请求
            CreateIndexRequest request = new CreateIndexRequest("jiang_index");
            //执行请求,请求后获得响应
            CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
            System.out.println(response);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述
    访问前的索引:
    在这里插入图片描述
    在这里插入图片描述
    再次查看索引信息
    在这里插入图片描述

    2.2判断索引是否存在

        @Test
        void testExistIndex() throws IOException {
            //创建索引请求
            GetIndexRequest request = new GetIndexRequest("jiang_index");
            //获得索引,判断是否存在
            boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
            System.out.println(exists);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    2.3删除索引

     @Test
        void testDeleteIndex() throws IOException {
            //创建删除索引请求
            DeleteIndexRequest request = new DeleteIndexRequest("jiang_index");
            //获得索引
            AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
            System.out.println(delete);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述
    在这里插入图片描述

    2.4添加文档

    创建对应的实体类
    在这里插入图片描述

      }
        /**
         * 添加文档
         */
        @Test
        void addDocunemntForIndex() throws IOException {
            //1.创建对象
            User user = new User("jierlung", 18);
            //2.创建请求对象
            IndexRequest request = new IndexRequest("jiang_index");
            //3.规则 put /jiang_index/_doc/1
            request.id("1");
            request.timeout(TimeValue.timeValueSeconds(1));
            //4.将数据放入请求json中
            request.source(JSON.toJSON(user), XContentType.JSON);
            //5.发送请求获取响应结果
            IndexResponse response = client.index(request, RequestOptions.DEFAULT);
    
            System.out.println(response.toString()); //结果为对应的json
            System.out.println(response.status()); //返回状态
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    在这里插入图片描述

    2.6判断文档是否存在

        /**
         * 判断文档是否存在
         */
        @Test
        void testIsExist() throws IOException {
            GetRequest getRequest = new GetRequest("jiang_index", "1");
            //不获取返回_source的上下文了
            getRequest.fetchSourceContext(new FetchSourceContext(false));
            getRequest.storedFields("_none_");
            boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);
            System.out.println(exists);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    2.7获取文档的信息

     /**
         * 获取文档信息
         */
        @Test
        void testGetDocument() throws IOException {
            GetRequest getRequest = new GetRequest("jiang_index", "1");
            GetResponse response = client.get(getRequest, RequestOptions.DEFAULT);
            System.out.println(response.getSourceAsString()); //打印文档的内容
            System.out.println(response); //返回内容和密令一样
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    2.8更新文档的信息

     /**
         * 更新文档信息
         */
        @Test
        void testUpdateDocument() throws IOException {
            UpdateRequest updateRequest = new UpdateRequest("jiang_index","1");
            updateRequest.timeout("1s");
            User user = new User("黎明", 16);
            updateRequest.doc(JSON.toJSON(user),XContentType.JSON);
            UpdateResponse update = client.update(updateRequest, RequestOptions.DEFAULT);
            System.out.println(update);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述
    在这里插入图片描述

    2.9删除文档信息

       /**
         * 删除文档信息
         */
        @Test
        void testDeleteDocument() throws IOException {
            DeleteRequest deleteRequest = new DeleteRequest("jiang_index", "1");
            deleteRequest.timeout("1s");
    
            DeleteResponse delete = client.delete(deleteRequest, RequestOptions.DEFAULT);
    
            System.out.println(delete.status());
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述
    在这里插入图片描述

    2.10批量插入数据

     /**
         *批量插入数据
         */
        @Test
        void testBulkRequest() throws IOException {
            BulkRequest bulkRequest = new BulkRequest();
            bulkRequest.timeout("1s");
    
            ArrayList<User> users = new ArrayList<>();
            users.add(new User("jiang1",14));
            users.add(new User("jiang2",14));
            users.add(new User("jiang3",14));
            users.add(new User("jiang4",14));
            users.add(new User("jiang5",14));
            users.add(new User("jiang6",14));
    
            for (int i=0;i<users.size();i++){
                bulkRequest.add(new IndexRequest("jiang_index")
                        .id(""+(i+1))
                        .source(JSON.toJSON(users.get(i)),XContentType.JSON)
                );
            }
            BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
            System.out.println(bulkResponse.hasFailures()); //是否失败,返回false代表成功
        }
    
    • 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

    在这里插入图片描述
    在这里插入图片描述

    3.11查询

        // 查询
        // SearchRequest 搜索请求
        // SearchSourceBuilder 条件构造
        // HighlightBuilder 构建高亮
        // TermQueryBuilder精确查询
        // MatchALLQueryBuilder
        // xxx QueryBuilder 对应我们刚才看到的命令!
     /**
         * 查询
         */
        @Test
        void testSearch() throws IOException {
            //创建请求
            SearchRequest searchRequest = new SearchRequest("jiang_index");
            //构建搜索条件
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            //查询条件,我们可以使用QueryBuilders 工具来实现
            TermQueryBuilder termQueryBuilder= QueryBuilders.termQuery("userName","jiang1");
    
            sourceBuilder.query(termQueryBuilder);
    
            sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
    
            searchRequest.source(sourceBuilder);
    
            SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
    
            System.out.println(JSON.toJSON(searchResponse.getHits()));
            System.out.println("========================");
            for (SearchHit hit : searchResponse.getHits().getHits()) {
                System.out.println(hit.getSourceAsMap());
            }
        }
    
    • 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
  • 相关阅读:
    ThreeJS-3D教学十-有宽度的line
    linux:一切都是文件
    C //例 4.4 输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。
    【STL】list
    为什么你开发的网页不应该大于 14KB?
    LangChain实战
    Java概述
    【python】使用datafrom.plot直接画箱图
    async await使用同步方式写异步代码
    金九银十!2022BAT后端Java进阶面试快速指南宝典,秋招面试不背不行呀!!
  • 原文地址:https://blog.csdn.net/qq_52166656/article/details/127672586