项目源码
https://gitee.com/smart_piggy/learn-spring-cloud/tree/master/piggy-test
引入依赖
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>8.2.3</version>
<exclusions>
<exclusion>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
</exclusion>
<exclusion>
<artifactId>elasticsearch-rest-client</artifactId>
<groupId>org.elasticsearch.client</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>8.2.3</version>
</dependency>
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.1.1</version>
</dependency>
配置类
//异步
@Bean
public ElasticsearchAsyncClient elasticsearchClient01(){
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost(ip, port, scheme))
.setHttpClientConfigCallback(httpAsyncClientBuilder -> httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
RestClient restClient = restClientBuilder.build();
ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());
return new ElasticsearchAsyncClient(transport);
}
//同步
@Bean
public ElasticsearchClient elasticsearchClient02(){
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost(ip, port, scheme))
.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
});
RestClient restClient = restClientBuilder.build();
ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());
return new ElasticsearchClient(transport);
}
注入
@Resource
private ElasticsearchClient elasticsearchClient;
添加索引
CreateIndexResponse createIndexResponse = elasticsearchClient.indices().create(
c -> c.index("my-index-000008"));
索引是否存在
elasticsearchClient.exists(
b -> b.index("my-index-000001").id("bTWPj4wBeGohIJG6mGgV")).value()
索引添加别名
AddAction addAction = new AddAction.Builder().index("my-index-000007")
.alias("piggy-index").build();
UpdateAliasesRequest build = new UpdateAliasesRequest.Builder()
.actions(a -> a.add(addAction)).build();
boolean acknowledged = elasticsearchClient.indices()
.updateAliases(build).acknowledged();
插入
TestPO testPO = new TestPO();
testPO.setAge(20);
testPO.setName("admin");
// 1 添加
IndexRequest.Builder<Object> document = new IndexRequest.Builder<>()
.index("my-index-000001")
.document(testPO);
IndexRequest<Object> build = document.build();
IndexResponse index = elasticsearchClient.index(build);
// 2 id不存在添加 id存在全量修改
IndexResponse indexResponse = elasticsearchClient.index(b -> b
.index("my-index-000001").id("oe2flIwBTh5XsTOYghak")
.document(testPO));
修改
TestPO testPO = new TestPO();
testPO.setEmail("piggy@126.com");
UpdateResponse<TestPO> update = elasticsearchClient.update(
param -> param.index("my-index-000001").id("7").doc(testPO), TestPO.class);
删除
DeleteResponse delete = elasticsearchClient.delete(
a -> a.index("my-index-000001").id("oe2flIwBTh5XsTOYghak"));