springboot java 项目连接es

springboot java 项目连接es

介绍

小项目,没有引用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

连接es

使用了这个类

RestTemplate restTemplate;
header

其中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用的不是很多)

如果大家有疑问和需要我可以后期就行补充

你可能感兴趣的:(java,spring,boot,elasticsearch)