文章目录
- 系列文章目录
- 前言
- 一、是什么?
- 二、使用步骤
- 1.引入库
- 2.读入数据
- 总结
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、ElasticsearchTemplate是什么?ElasticsearchTemplate是Spring对ES java api的封装,提供了多样的查询, 帮助我们实现各种复杂的数据查询
二、使用步骤 1.引入库2.增删改查的基本使用org.springframework.boot spring-boot-starter-data-elasticsearch
template查询
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.query.Criteria;
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
@Autowired
private ElasticsearchRestTemplate template;
Criteria criteria = Criteria.where("id").is(id).and("delFlag").is("false");
CriteriaQuery criteriaQuery = new CriteriaQuery(criteria);
//查询单条
SearchHit searchHit = template.searchOne(criteriaQuery, entity.class);
//查询多条用search
根据id更新单条数据
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.action.update.UpdateRequest;
UpdateRequest updateRequest = new UpdateRequest(INDEX, "id");
updateRequest.doc("字段名", "要更新的字段值");
//restHighLevelClient配置见文章后部分
restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
新增
template.save(entity);
批量更新
import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkResponse; BulkRequest bulkRequest = new BulkRequest(); Mapmap= new HashMap<>(); map.put("name", "名称"); map.put("remark", "备注"); bulkRequest.add(new UpdateRequest(INDEX, "id1").doc(map).upsert()); bulkRequest.add(new UpdateRequest(INDEX, "id2").doc(map).upsert()); BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
RestClientConfig 配置
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RestClientConfig {
@Value("${spring.elasticsearch.hostname}")
private String hostname;
@Value("${spring.elasticsearch.port}")
private int port;
@Value("${spring.elasticsearch.username}")
private String username;
@Value("${spring.elasticsearch.password}")
private String password;
@Bean
public RestHighLevelClient restHighLevelClient() {
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
RestClientBuilder builder =
RestClient.builder(new HttpHost(hostname, port)).setHttpClientConfigCallback(f -> f.setDefaultCredentialsProvider(credentialsProvider));
return new RestHighLevelClient(builder);
}
}
总结



