摘要:高級客戶端目前支持更常用的,但還有很多東西需要補充,您可以通過告訴我們您的應(yīng)用程序需要哪些缺失的來幫助我們優(yōu)化優(yōu)先級,通過向這個添加注釋高級客戶端完整性。傳輸客戶端排除非數(shù)據(jù)節(jié)點的原因是為了避免將搜索流量發(fā)送給主節(jié)點。
前言
本節(jié)描述了Elasticsearch提供的Java API,所有的Elasticsearch操作都使用客戶端對象執(zhí)行,所有操作本質(zhì)上都是完全異步的(要么接收監(jiān)聽器,要么未來返回)。
此外,客戶端上的操作可能會大量累積和執(zhí)行。
注意,所有的API都是通過Java API公開的(實際上,Java API是在內(nèi)部使用以執(zhí)行它們的)。
警告Javadoc
我們計劃在Elasticsearch 7.0中對TransportClient進行棄用,并在8.0中完全刪除它,替而代之,你應(yīng)該使用Java高級REST客戶端,它執(zhí)行HTTP請求而不是序列化的Java請求。遷移指南描述了遷移所需的所有步驟。Java高級REST客戶端目前支持更常用的API,但還有很多東西需要補充,您可以通過告訴我們您的應(yīng)用程序需要哪些缺失的API來幫助我們優(yōu)化優(yōu)先級,通過向這個issue添加注釋:Java高級REST客戶端完整性。
任何丟失的API都可以通過使用具有JSON請求和響應(yīng)主體的低級Java REST客戶端來實現(xiàn)。
transport client的javadoc可以在這里找到:https://artifacts.elastic.co/...。
Maven存儲庫Elasticsearch駐留在Maven Central上。
例如,您可以在pom.xml文件中定義最新的版本:
Lucene Snapshot存儲庫org.elasticsearch.client transport 6.2.4
任何主要版本(如beta)的第一個releases版本都可能構(gòu)建在Lucene Snapshot版本之上,在這種情況下,您將無法解析客戶端的Lucene依賴項。
例如,如果您想使用基于Lucene 7.0.0-snapshot-00142c9的6.0.0-beta1版本,您必須定義以下存儲庫。
Maven:
elastic-lucene-snapshots Elastic Lucene Snapshots http://s3.amazonaws.com/download.elasticsearch.org/lucenesnapshots/00142c9 true false
Gradle:
maven { url "http://s3.amazonaws.com/download.elasticsearch.org/lucenesnapshots/00142c9" }Log4j 2記錄器
您還需要包括Log4j 2依賴項:
org.apache.logging.log4j log4j-core 2.9.1
并在類路徑中提供Log4j 2配置文件,例如,你可以給你的src/main/resources工程目錄添加一個log4j2.properties文件,像這樣:
appender.console.type = Console appender.console.name = console appender.console.layout.type = PatternLayout rootLogger.level = info rootLogger.appenderRef.console.ref = console使用另一個記錄器
如果你想使用另一個日志記錄器,而不是Log4j 2,你可以使用SLF4J bridge來實現(xiàn)這一點:
org.apache.logging.log4j log4j-to-slf4j 2.9.1 org.slf4j slf4j-api 1.7.24
這個頁面列出了可以使用的實現(xiàn),選擇您最喜歡的日志記錄器,并將其作為依賴項添加。例如,我們將使用slf4j-simple 日志記錄器:
java客戶端org.slf4j slf4j-simple 1.7.21
你可以通過多種方式使用Java客戶端:
在現(xiàn)有集群上執(zhí)行標(biāo)準(zhǔn)索引、獲取、刪除和搜索操作
在運行的集群上執(zhí)行管理任務(wù)
獲取一個Elasticsearch客戶端很簡單,獲取客戶端最常見的方法是創(chuàng)建一個連接到集群的TransportClient。
重要
客戶端必須具有與集群中的節(jié)點相同的主版本(例如,2.x,或5.x),客戶端可能連接到具有不同次要版本的集群(例如2.3.x),但可能不支持新功能,理想情況下,客戶端應(yīng)該具有與集群相同的版本。
警告傳輸客戶端
我們計劃在Elasticsearch 7.0中對TransportClient進行棄用,并在8.0中完全刪除它,替而代之,你應(yīng)該使用Java高級REST客戶端,它執(zhí)行HTTP請求而不是序列化的Java請求。遷移指南描述了遷移所需的所有步驟。Java高級REST客戶端目前支持更常用的API,但還有很多東西需要補充,您可以通過告訴我們您的應(yīng)用程序需要哪些缺失的API來幫助我們優(yōu)化優(yōu)先級,通過向這個issue添加注釋:Java高級REST客戶端完整性。
任何丟失的API都可以通過使用具有JSON請求和響應(yīng)主體的低級Java REST客戶端來實現(xiàn)。
TransportClient使用傳輸模塊遠程連接到Elasticsearch集群,它不加入集群,但只需獲取一個或多個初始傳輸?shù)刂罚⒃诿總€操作上以循環(huán)的方式與它們通信(盡管大多數(shù)操作可能是“兩跳”操作)。
// on startup TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new TransportAddress(InetAddress.getByName("host1"), 9300)) .addTransportAddress(new TransportAddress(InetAddress.getByName("host2"), 9300)); // on shutdown client.close();
注意,如果你使用的是與“elasticsearch”不同的集群名稱,則必須設(shè)置集群名稱:
Settings settings = Settings.builder() .put("cluster.name", "myClusterName").build(); TransportClient client = new PreBuiltTransportClient(settings); //Add transport addresses and do something with the client...
傳輸客戶端具有集群嗅探特性,允許動態(tài)添加新主機并刪除舊主機,當(dāng)啟用嗅探時,傳輸客戶機將連接到其內(nèi)部節(jié)點列表中的節(jié)點,這些節(jié)點是通過調(diào)用addTransportAddress構(gòu)建的。在此之后,客戶端將調(diào)用這些節(jié)點上的內(nèi)部集群狀態(tài)API來發(fā)現(xiàn)可用的數(shù)據(jù)節(jié)點,客戶端的內(nèi)部節(jié)點列表將僅用這些數(shù)據(jù)節(jié)點替換,默認(rèn)情況下,這個列表每5秒刷新一次。注意,嗅探器連接的IP地址是在這些節(jié)點的Elasticsearch配置中聲明為發(fā)布的地址。
請記住,如果該節(jié)點不是一個數(shù)據(jù)節(jié)點,該列表可能不包括它連接到的原始節(jié)點。例如,如果您最初連接到一個主節(jié)點,在嗅探之后,沒有進一步的請求將進入主節(jié)點,而是指向任何數(shù)據(jù)節(jié)點。傳輸客戶端排除非數(shù)據(jù)節(jié)點的原因是為了避免將搜索流量發(fā)送給主節(jié)點。
為了啟用嗅探,請設(shè)置client.transport.sniff為true:
Settings settings = Settings.builder() .put("client.transport.sniff", true).build(); TransportClient client = new PreBuiltTransportClient(settings);
其他傳輸客戶端級別設(shè)置包括:
參數(shù):client.transport.ignore_cluster_name
描述:設(shè)置為true以忽略連接節(jié)點的集群名稱驗證。(自從0.19.4)
參數(shù):client.transport.ping_timeout
描述:等待節(jié)點的ping響應(yīng)的時間,默認(rèn)為5s。
參數(shù):client.transport.nodes_sampler_interval
描述:采樣/ping節(jié)點登記和連接的頻率,默認(rèn)5s。
將客戶端連接到僅協(xié)調(diào)的節(jié)點您可以在本地啟動一個只協(xié)調(diào)的節(jié)點,然后在應(yīng)用程序中創(chuàng)建一個TransportClient,該客戶端連接到這個只協(xié)調(diào)的節(jié)點。
通過這種方式,只需協(xié)調(diào)的節(jié)點將能夠加載您需要的任何插件(例如,關(guān)于discovery插件)。
下一篇:Elasticsearch Java API 6.2(文檔API)文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/69699.html
摘要:注意當(dāng)一個文檔在快照的時間和索引請求過程之間發(fā)生變化時,會發(fā)生版本沖突。當(dāng)版本匹配時,更新文檔并增加版本號。在正在運行的更新中,使用更改的值使用查找的值。值加快進程立即生效,減慢查詢的值在完成當(dāng)前批處理后生效,以防止?jié)L動超時。 文檔API 本節(jié)描述以下CRUD API: 單文檔的API Index API Get API Delete API Update API 多文檔API ...
摘要:入門本節(jié)描述從獲取工件到在應(yīng)用程序中使用它如何開始使用高級別客戶端。保證能夠與運行在相同主版本和大于或等于的次要版本上的任何節(jié)點通信。與具有相同的發(fā)布周期,將版本替換為想要的客戶端版本。 Java High Level REST Client 入門 本節(jié)描述從獲取工件到在應(yīng)用程序中使用它如何開始使用高級別REST客戶端。 兼容性 Java High Level REST Client需...
閱讀 2089·2021-11-23 09:51
閱讀 3697·2021-10-20 13:49
閱讀 1706·2021-09-06 15:13
閱讀 1816·2021-09-06 15:02
閱讀 3154·2021-09-02 15:11
閱讀 890·2019-08-29 15:37
閱讀 1732·2019-08-29 13:24
閱讀 2274·2019-08-29 11:28