
前言
????最新在學(xué)習(xí)SpringBoot整合es的一些知識,瀏覽了網(wǎng)上的一些資料,發(fā)現(xiàn)全都是es很久之前的版本了,其中比較流行的是Java REST Client的High Level Rest Client版本,但是官方文檔的說明中,已經(jīng)申明該版本即將廢棄,不再進(jìn)行維護(hù)了??梢姡汗俜轿臋n
????目前官方推薦的版本是Java Client 7.16,但是官方的API文檔寫的太蛋疼了,搜遍了網(wǎng)上的資料,也沒有最新7.16版本的相關(guān)說明及整和代碼實(shí)例。于是本人在琢磨幾天之后,終于順利跑通了一些代碼,并完成了幾個簡單的代碼實(shí)例。因此在此拋磚引玉,給大家提供一些參考。
一、Elasticsearch和Kibana 7.16版本安裝
???? Elasticsearch和Kibana客戶端的安裝網(wǎng)上有很多資料,也可以參考我之前寫的文章:Docker安裝Elasticsearch和Kibana,文章里使用的7.6.2版本,改成7.16即可。
二、pom.xml文件引入依賴
???? 官方推薦的是引入前兩個依賴即可,但是在項(xiàng)目啟動過程中,可能會報缺少jackson的錯誤, 所以額外添加了兩個jackson的依賴。
<project>
<dependencies>
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>7.16.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.13.0</version>
</dependency>
</dependencies>
</project>
三、代碼實(shí)例
???? 以下是一些Java API操作ES的實(shí)例,都是非?;A(chǔ)的操作方法為大家提供參考,其中一些復(fù)雜的操作,如:查找時添加排序、關(guān)鍵詞等篩選條件,這些復(fù)雜的操作可以參考官方文檔,https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/api-conventions.html
再次吐槽一下官方的文檔,一點(diǎn)都不詳細(xì),對像我一樣的新手非常不友好。文章來源:http://www.zghlxwxcb.cn/news/detail-423942.html
package com.xiqing.project.elasticsearch;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch.core.CreateRequest;
import co.elastic.clients.elasticsearch.core.SearchRequest;
import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.elasticsearch.core.search.Hit;
import co.elastic.clients.json.jackson.JacksonJsonpMapper;
import co.elastic.clients.transport.ElasticsearchTransport;
import co.elastic.clients.transport.rest_client.RestClientTransport;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ElasticsearchTest {
public static void main(String[] args) throws Exception {
// 部署ES的ip地址和端口
RestClient restClient = RestClient.builder(
new HttpHost("47.100.160.51", 9200)).build();
ElasticsearchTransport transport = new RestClientTransport(
restClient, new JacksonJsonpMapper());
ElasticsearchClient client = new ElasticsearchClient(transport);
// 索引
String index = "user-index";
// 索引別名
String aliases = "user-aliases-01";
/**
* 創(chuàng)建索引
* @param index: 索引名稱
* @param aliases: 別名
* @author : XI.QING
* @date : 2021/12/28
*/
client.indices().create(c -> c
.index(index)
.aliases(aliases, a -> a
.isWriteIndex(true)));
/**
* 創(chuàng)建數(shù)據(jù)文檔
* @param index: 索引名稱
* @author : XI.QING
* @date : 2021/12/29
*/
Map<String, String> map = new HashMap<>();
map.put("username", "張三");
map.put("address", "江蘇省南京市");
CreateRequest dataStreamResponse = CreateRequest.of(e -> e
.index(index)
.id("1")
.type("_doc")
.document(map));
client.create(dataStreamResponse);
/**
* 查詢索引
* @param indexList: 查詢索引的名稱
* @param clazz: 返回結(jié)果的類型
* @author : XI.QING
* @date : 2021/12/29
*/
// Object是一個po實(shí)例,如自定義的User、Book、Student等等
List<Object> resultList = new ArrayList<>();
SearchRequest searchRequest = SearchRequest.of(s -> s
.index(index)
);
SearchResponse<Object> response = client.search(searchRequest, Object.class);
if (response.hits() != null) {
List<Hit<Object>> list = response.hits().hits();
for (Hit<Object> hit :
list) {
Object t = (Object) hit.source();
resultList.add(t);
}
}
/**
* 刪除索引
* @param index: 索引名稱
* @author : XI.QING
* @date : 2021/12/29
*/
// 刪除索引(范圍大)
client.delete(c -> c.index(index));
// 刪除索引和ID(范圍小)
client.delete(c -> c.index(index).id("1"));
}
}
總結(jié)
以上就是文章的全部內(nèi)容,寫這篇文章的原因是因?yàn)榫W(wǎng)上沒有最新的Elasticsearch Java API Client 7.16相關(guān)教程,同時官方文檔提供的示例也非常少,很不友好,所以拋轉(zhuǎn)引玉一下,同時給他人提供一些參考。同時也歡迎各位到我的個人博客來逛一逛:西清的小屋文章來源地址http://www.zghlxwxcb.cn/news/detail-423942.html
到了這里,關(guān)于SpringBoot整合最新Elasticsearch Java API Client 7.16教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!