我们可以通过直接构造http请求来操作elasticsearch,es也提供了很多语言的sdk,让开发人员可以简单高效的访问es。
其中es官方也提供了java lowLevel client和highLevel client,elasticsearch transport client (在7.0后废弃,推荐使用高级客户端)。
低级客户端的api,在http请求的形势下进行了简单的封装,需要自己拼接大量的内容,虽然比较灵活,但是对程序员来说相对耗时,使用不方便。目前比较推荐的是高级客户端,封装了大量的api,简单的构造可以完成crud操作。
当然spring-boot 也提供了es的starter但是更新比较慢,版本还停留在es6。
下面我们看看如何使用java高级客户端
1.引入maven依赖
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.12.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.12.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.12.0</version>
</dependency>
核心是构造一个restHighLevenClient对象,这里我们创建一个spring bean
@Configuration
public class ElasticSearchConfiguration implements ImportBeanDefinitionRegistrar {
@Value("${es.hosts}")
private String hostString;
@Bean
public RestHighLevelClient restHighLevelClient(){
String[] hostStringArrays = hostString.split(",");
List<HttpHost> httpHostList = new ArrayList<>();
for (String host:hostStringArrays){
httpHostList.add(HttpHost.create(host));
}
return new RestHighLevelClient(RestClient.builder(
httpHostList.toArray(new HttpHost[]{