irpas技术客

SpringBoot整合最新Elasticsearch Java API Client 7.16教程_braised panda

网络 5098

文章目录 前言一、Elasticsearch和Kibana 7.16版本安装二、pom.xml文件引入依赖三、代码实例总结

前言

????最新在学习SpringBoot整合es的一些知识,浏览了网上的一些资料,发现全都是es很久之前的版本了,其中比较流行的是Java REST Client的High Level Rest Client版本,但是官方文档的说明中,已经申明该版本即将废弃,不再进行维护了。可见:官方文档 ????目前官方推荐的版本是Java Client 7.16,但是官方的API文档写的太蛋疼了,搜遍了网上的资料,也没有最新7.16版本的相关说明及整和代码实例。于是本人在琢磨几天之后,终于顺利跑通了一些代码,并完成了几个简单的代码实例。因此在此抛砖引玉,给大家提供一些参考。

一、Elasticsearch和Kibana 7.16版本安装

???? Elasticsearch和Kibana客户端的安装网上有很多资料,也可以参考我之前写的文章:Docker安装Elasticsearch和Kibana,文章里使用的7.6.2版本,改成7.16即可。

二、pom.xml文件引入依赖

???? 官方推荐的是引入前两个依赖即可,但是在项目启动过程中,可能会报缺少jackson的错误, 所以额外添加了两个jackson的依赖。

<project> <dependencies> <dependency> <groupId>co.elastic.clients</groupId> <artifactId>elasticsearch-java</artifactId> <version>7.16.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.13.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.13.0</version> </dependency> </dependencies> </project> 三、代码实例

???? 以下是一些Java API操作ES的实例,都是非常基础的操作方法为大家提供参考,其中一些复杂的操作,如:查找时添加排序、关键词等筛选条件,这些复杂的操作可以参考官方文档,https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/api-conventions.html 再次吐槽一下官方的文档,一点都不详细,对像我一样的新手非常不友好。

package com.xiqing.project.elasticsearch; import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch.core.CreateRequest; import co.elastic.clients.elasticsearch.core.SearchRequest; import co.elastic.clients.elasticsearch.core.SearchResponse; import co.elastic.clients.elasticsearch.core.search.Hit; import co.elastic.clients.json.jackson.JacksonJsonpMapper; import co.elastic.clients.transport.ElasticsearchTransport; import co.elastic.clients.transport.rest_client.RestClientTransport; import org.apache.http.HttpHost; import org.elasticsearch.client.RestClient; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ElasticsearchTest { public static void main(String[] args) throws Exception { // 部署ES的ip地址和端口 RestClient restClient = RestClient.builder( new HttpHost("47.100.160.51", 9200)).build(); ElasticsearchTransport transport = new RestClientTransport( restClient, new JacksonJsonpMapper()); ElasticsearchClient client = new ElasticsearchClient(transport); // 索引 String index = "user-index"; // 索引别名 String aliases = "user-aliases-01"; /** * 创建索引 * @param index: 索引名称 * @param aliases: 别名 * @author : XI.QING * @date : 2021/12/28 */ client.indices().create(c -> c .index(index) .aliases(aliases, a -> a .isWriteIndex(true))); /** * 创建数据文档 * @param index: 索引名称 * @author : XI.QING * @date : 2021/12/29 */ Map<String, String> map = new HashMap<>(); map.put("username", "张三"); map.put("address", "江苏省南京市"); CreateRequest dataStreamResponse = CreateRequest.of(e -> e .index(index) .id("1") .type("_doc") .document(map)); client.create(dataStreamResponse); /** * 查询索引 * @param indexList: 查询索引的名称 * @param clazz: 返回结果的类型 * @author : XI.QING * @date : 2021/12/29 */ // Object是一个po实例,如自定义的User、Book、Student等等 List<Object> resultList = new ArrayList<>(); SearchRequest searchRequest = SearchRequest.of(s -> s .index(index) ); SearchResponse<Object> response = client.search(searchRequest, Object.class); if (response.hits() != null) { List<Hit<Object>> list = response.hits().hits(); for (Hit<Object> hit : list) { Object t = (Object) hit.source(); resultList.add(t); } } /** * 删除索引 * @param index: 索引名称 * @author : XI.QING * @date : 2021/12/29 */ // 删除索引(范围大) client.delete(c -> c.index(index)); // 删除索引和ID(范围小) client.delete(c -> c.index(index).id("1")); } }

总结

以上就是文章的全部内容,写这篇文章的原因是因为网上没有最新的Elasticsearch Java API Client 7.16相关教程,同时官方文档提供的示例也非常少,很不友好,所以抛转引玉一下,同时给他人提供一些参考。同时也欢迎各位到我的个人博客来逛一逛:西清的小屋


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #JAVA #API #client #716教程 #REST