不知此網(wǎng)站枉做男人百度推廣一個(gè)月多少錢
springboot java 項(xiàng)目連接es
介紹
小項(xiàng)目,沒(méi)有引用es客戶端,直接使用的http的方式進(jìn)行連接的,方式比較簡(jiǎn)單,但是依賴較少,一個(gè)比較小的項(xiàng)目,部署方便
業(yè)務(wù)也很簡(jiǎn)單就是把數(shù)據(jù)庫(kù)中的數(shù)據(jù)讀到es中,然后在做幾個(gè)接口讀es中的數(shù)據(jù)
版本
es版本 6.8.11
springboot 2.6.3
java 8
依賴
只有web和mysql的依賴,別的不需要
這里就不作介紹了,如果有需要可以私信我
開始
配置
這個(gè)是放到y(tǒng)ml文件中的配置 就是es的地址
es:url: http://127.0.0.1:9200/name: elasticpassword: 1234567890index: es_indexsearchSize: 1000version: 6.8.11
連接es
使用了這個(gè)類
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 就是參數(shù)
response.getBody() 返回的是一個(gè)json對(duì)象 自己根據(jù)內(nèi)容解析一下即可
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();
}
補(bǔ)充
不同的版本是有差異的,具體可以在使用中根據(jù)報(bào)錯(cuò)進(jìn)行調(diào)整
舉例
es6.*版本的更新語(yǔ)句是這樣的
esUrl + "/" + index + "/_doc/" + id + "/_update";
es7.*的是這樣的
esUrl + "/" + index + "/_update/" + id + "?refresh=true"
最后
整體的就是這樣,其實(shí)主要是是restTemplate的使用,相對(duì)于es客戶端使用比較簡(jiǎn)單一下(個(gè)人認(rèn)為,主要是es用的不是很多)
如果大家有疑問(wèn)和需要我可以后期就行補(bǔ)充