依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>7.13.3</version>
</dependency>
配置
@Configuration
public class ESConfig {
@Bean
public TransportClient getTransportClient() {
Settings settings = Settings.builder()
.put("cluster.name", "elasticsearch").build();
try {
TransportClient client = new PreBuiltTransportClient(settings)
.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300))
.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9301));
return client;
} catch (UnknownHostException e) {
e.printStackTrace();
}
return null;
}
}
@Autowired
private TransportClient transportClient;
删除单条数据
public void deleteData() {
DeleteResponse response = transportClient
.prepareDelete("product2", "_doc", "2")
.get();
System.out.println(response.getResult());
}
根据查询结果删除多条数据
public void deleteDataByQueryResult() {
new DeleteByQueryRequestBuilder(transportClient, DeleteByQueryAction.INSTANCE)
.filter(QueryBuilders.matchQuery("name", "aa"))
.source("myindex")
.execute(new ActionListener<BulkByScrollResponse>() {
@Override
public void onResponse(BulkByScrollResponse response) {
long deleted = response.getDeleted();
System.out.println("成功删除" + deleted + "条数据");
}
@Override
public void onFailure(Exception e) {
System.out.println("删除失败");
}
});
}
修改单条数据
public void updateData() throws IOException {
UpdateResponse response = transportClient
.prepareUpdate("product2", "_doc", "2")
.setDoc(XContentFactory.jsonBuilder()
.startObject()
.field("name", "update name")
.endObject())
.get();
System.out.println(response.getResult());
}
根据查询结果修改数据
public void updataDataByQueryResult() {
UpdateByQueryRequestBuilder updateByQuery =
new UpdateByQueryRequestBuilder(transportClient, UpdateByQueryAction.INSTANCE);
updateByQuery.source("myindex")
.filter(QueryBuilders.termQuery("name", "aa"))
.maxDocs(1000)
.script(new Script(ScriptType.INLINE,
"painless",
"ctx._source.awesome = 'absolutely'",
Collections.emptyMap()));
BulkByScrollResponse response = updateByQuery.get();
}