当前位置: 首页 > 后端技术 > Java

Elasticsearchrest-high-level-client基本操作

时间:2023-04-01 18:23:56 Java

Elasticsearchrest-high-level-client基本操作本文主要讲解rest-high-level-client来操作Elasticsearch。虽然这个客户端会在后续版本中逐步淘汰,但目前大部分公司都在使用Elasticsearch版本。是6.x的,所以这个client还是有一定了解的。准备2.2.11版本的SpringBoot环境,准备Elasticsearch环境。在这里,版本8.x引入了对elasticsearch-rest-high-level-client7.4.21的依赖。配置依赖注意事项:我使用的是springboot2.2.11版本,其内部的elasticsearch和elasticsearch-rest-client都是6.8.13。需要注意的是groupId>lomboktrueorg.springframework.bootspring-boot-starter-test<上合组织pe>testorg.elasticsearchelasticsearch7??.4.2log4j-apiorg.apache.logging.log4jorg.elasticsearch.clientelasticsearch-rest-high-level-client<版本>7.4.2<排除项><排除项>org.elasticsearch.clientelasticsearch-rest-clientelasticsearchorg.elasticsearchorg.elasticsearch.clientelasticsearch-rest-client7??.4.2org.apache.logging.log4jlog4j-core2.8.2log4j-apiorg.apache.logging.log4jjunitjunit4.122.搭建RestHighLevelClienthighlevelclient是一个高层客户端,需要通过它来操作Elasticsearch,其底层也依赖于rest-client底层客户端@Slf4jpublicclassTestEsClient{privateRestHighLevelClientclient=null;privateObjectMapperobjectMapper=newObjectMapper();//建立RestHighLevelClient@Beforepublicvoidprepare(){//创建客户端连接对象String[]ips={"172.16.225.111:9200"};HttpHost[]httpHosts=newHttpHost[ips.length];for(inti=0;i>aliases=getIndexResponse.getAliases();Mapmappings=getIndexResponse.getMappings();Map设置=getIndexResponse.getSettings();log.info("[别名:{}]”,别名);log.info(“[映射:{}]”,映射);log.info(“[设置:{}”,设置);}捕获(IOExceptione){e.printStackTrace();}}可以根据response获取aliases,mappings,settings等,和Kibana中返回的一样,感觉比较好理解request.source(blogInfoJsonStr,XContentType.JSON);@TestpublicvoidinsertDoc(){IndexRequestrequest=newIndexRequest();request.index("blog1").id("1");BlogInfoblogInfo=newBlogInfo().setBlogName("Elasticsearch简介第1章").setBlogType("Elasticsearch").setBlogDesc("本文主要介绍Elasticsearch客户端的基本操作");try{//提供java对象的jsonstrStringblogInfoJsonStr=objectMapper.writeValueAsString(blogInfo);request.source(blogInfoJsonStr,XCon帐篷类型.JSON);//这里报错的原因是我的Elasticsearch8.x版本使用的restHighLevel已经无法解析了,因为新的es不再推荐使用//restHighLevel,而使用ElasticsearchJavaAPIClientIndexResponseindex=客户端.index(请求,RequestOptions.DEFAULT);log.info("[Resultinsertdoc:{}]",index);}catch(IOExceptione){}}6.查询文档client.get注意getResponse.getSourceAsString()返回文档数据@TestpublicvoidtestSelectDoc(){GetRequestgetRequest=newGetRequest();getRequest.index("blog1").id("1");试试{GetResponsegetResponse=client.get(getRequest,RequestOptions.DEFAULT);BlogInfoblogInfo=objectMapper.readValue(getResponse.getSourceAsString(),BlogInfo.class);log.info("[获取文档:{}]",blogInfo);}catch(IOExceptione){e.printStackTrace();}}7.删除文档client.delete注意删除文档的响应无法解析Elasticsearch8.x版本@TestpublicvoidtestDeleteDoc(){DeleteRequestdeleteRequest=newDeleteRequest();deleteRequest.index("blog1").id("1");try{//这里也会抛出与上面相同的错误DeleteResponsedeleteResponse=client.delete(deleteRequest,RequestOptions.DEFAULT);log.info("[删除响应:{}]",deleteResponse);}catch(IOExceptione){}}总结本文主要介绍java中操作Elasticsearch的客户端rest-high-level-client的基本使用,如果使用springboot需要注意jar冲突。在后续的操作中,Elasticsearchclient会逐渐变成ElasticsearchJavaAPIClient,但大部分还是使用rest-high-level-client。

最新推荐
猜你喜欢