我嘗試通過java api訪問elasticserach的本地實例。 根據elastic search doc,我可以使用「cluster.name」屬性來指定要使用的集羣的名稱。完善。 很遺憾,我不能指定要使用的節點名稱?我可以看到,這個也可以在configuration中配置。 也許這是一個壞習慣?? 此外,我可以看到here,我可以定義一個自定義服務ID,但是如何將其指定給我的java傳輸客戶端?彈性搜索java特定配置
非常感謝您的幫助。
我嘗試通過java api訪問elasticserach的本地實例。 根據elastic search doc,我可以使用「cluster.name」屬性來指定要使用的集羣的名稱。完善。 很遺憾,我不能指定要使用的節點名稱?我可以看到,這個也可以在configuration中配置。 也許這是一個壞習慣?? 此外,我可以看到here,我可以定義一個自定義服務ID,但是如何將其指定給我的java傳輸客戶端?彈性搜索java特定配置
非常感謝您的幫助。
Elasticsearch的重點在於創建一個高度可用的數據集羣。並非所有節點都包含所有數據,並且並非所有節點都可能一直處於運行狀態。如果你想連接到一個單一的節點,通過指定它的名字,並由於某種原因該節點已關閉(它已被殺死,它正在升級,它正在重新設置,數據被抹去重新索引,等),然後你的客戶端將無法運行查詢並獲得結果。
相反,如果連接到集羣,ES將確保將查詢路由到正在運行的集羣節點,而不管某些可能關閉的節點的狀態如何。所以最佳做法是始終通過cluster.name
進行連接,以充分利用ES羣集。
至於SERVICE_ID,它不是您在代碼中指定的內容,它僅僅是您在Windows上運行時要提供給Elasticsearch服務的名稱。
謝謝,但知道,我沒有得到在我的彈性搜索配置中指定默認節點名稱的重點?我應該讓ES定義它的默認節點名稱(奇蹟字符)嗎?如果我們不需要使用它,那麼用戶會使用這個屬性? – Etienne
對於服務ID,我認爲它允許我在一臺機器上啓動幾個ES實例並識別它們。所以我想我的代碼會指定它連接到好的實例。如果我沒有指定我的ES客戶端如何知道要連接哪個實例?也許這是我們連接的端口?如果我在這一點上是正確的,那麼可能有些東西我不明白,直到現在我讓默認的「elasticsearch.yml」來配置不同服務ID的實例。對於ES實例XXX,我必須創建一個XXX.yml嗎? 非常感謝。 – Etienne
指定節點名稱僅用於更好地識別它們。不是每個人都知道奇蹟字符是什麼以及他們識別哪個節點。 – Val