小项目,没有引用es客户端,直接使用的http的方式进行连接的,方式比较简单,但是依赖较少,一个比较小的项目,部署方便
业务也很简单就是把数据库中的数据读到es中,然后在做几个接口读es中的数据
es版本 6.8.11
springboot 2.6.3
java 8
只有web和mysql的依赖,别的不需要
这里就不作介绍了,如果有需要可以私信我
这个是放到yml文件中的配置 就是es的地址
es:
url: http://127.0.0.1:9200/
name: elastic
password: 1234567890
index: es_index
searchSize: 1000
version: 6.8.11
使用了这个类
RestTemplate restTemplate;
其中name和password就是配置中的
public HttpHeaders header() {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
httpHeaders.set("authorization", "Basic " + (new BASE64Encoder().encode((name + ":" + password).getBytes()).replaceAll("\n", "")));
return httpHeaders;
}
esUrl 是es的地址
index 就是索引
param 就是参数
response.getBody() 返回的是一个json对象 自己根据内容解析一下即可
public JSONObject search(JSONObject param) {
String url = esUrl + "/" + index + "/_search";
HttpEntity httpEntity = new HttpEntity(param.toJSONString(), header());
ResponseEntity<JSONObject> response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, JSONObject.class);
return response.getBody();
}
public void deleteById(String id) {
String url = esUrl + "/" + index + "/_doc/" + id;
restTemplate.delete(url);
}
public JSONObject updateEsById(String id, JSONObject param) {
String url = esUrl + "/" + index + "/_doc/" + id + "/_update";
HttpEntity httpEntity = new HttpEntity(param.toJSONString(), header());
ResponseEntity<JSONObject> response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, JSONObject.class);
return response.getBody();
}
public void saveById(String id, JSONObject json) {
String url = esUrl + "/" + index + "/_doc/" + id;
HttpEntity httpEntity = new HttpEntity(json.toJSONString(), header());
ResponseEntity<JSONObject> response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, JSONObject.class);
JSONObject ret = response.getBody();
}
不同的版本是有差异的,具体可以在使用中根据报错进行调整
举例
es6.*版本的更新语句是这样的
esUrl + "/" + index + "/_doc/" + id + "/_update";
es7.*的是这样的
esUrl + "/" + index + "/_update/" + id + "?refresh=true"
整体的就是这样,其实主要是是restTemplate的使用,相对于es客户端使用比较简单一下(个人认为,主要是es用的不是很多)
如果大家有疑问和需要我可以后期就行补充