3.5.19.3.Elasticsearch语言开发(Java)
创作人:李吉明
审稿人:亢伟楠
简介
本节介绍如何使用 Java 操作 Elasticsearch(简称 ES ),将从以下几个方面进行阐述:
l 客户端选择
l 配置及初始化
l 常见 API 使用
l 完整示例
一、客户端选择
ES 官方提供了三种Java API 接口,分别是 TransportClient、Java Low Level REST Client、Java High Level REST Client。
其中 TransportClient 在 ES 7.x 版本中被标记为过时,并且将在 ES 8.x 版本中完全移除。原因是ES 版本迭代较快,TransportClient 使用了特定的传输协议,如果其版本与 ES 实例版本不一致则可能导致兼容性问题。ES 官方提供了向后兼容的 Java Low Level REST Client,并在此基础上提供了功能更多的 Java High Level REST Client。
故在生产开发中推荐使用 Java High Level REST Client。
Java High Level REST Client 的每一个 API 都有同步和异步两种形式,异步 API 以 async 结尾,本节主要以同步形式做示例。并且每个 API 都接受一个 RequestOptions 的参数,可以添加 Header、控制请求访问到指定 ES 节点等,本节会以默认的 RequestOptions 做示例。
二、配置及初始化
1. 环境准备
JDK 1.8、Maven 3、ES 7.10 本地启动并监听9200端口
2. POM 依赖
将 elasticsearch-rest-high-level-client 依赖添加到 pom.xml 文件中,版本号应与ES集群版本一致。
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.10.2</version> </dependency>
3. 初始化
创建了一个和 Elasticsearch 的连接。为了使用方便此处封装为工具类,供读者参考。
public class RestHighLevelClientUtils { private static RestHighLevelClient client; static { RestClientBuilder clientBuilder = RestClient.builder( new HttpHost("localhost", 9200, "http")); //登陆认证 如果ES集群没有开启安全验证,可以跳过此设置。 CredentialsProvider provider = new BasicCredentialsProvider(); UsernamePasswordCredentials credentials = new UsernamePasswordCredentials( "username", "password"); provider.setCredentials(AuthScope.ANY, credentials); clientBuilder .setHttpClientConfigCallback(builder -> builder.setDefaultCredentialsProvider(provider) ); client = new RestHighLevelClient(clientBuilder); } public static RestHighLevelClient getClient() { return client; } }
《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.19.Elasticsearch语言开发(Python/Nodejs/Java)——3.5.19.3.Elasticsearch语言开发(Java)(下) https://developer.aliyun.com/article/1226555