我有兩個ElasticSearch服務器之間平衡:裝載兩個elasticsearch服務器
http://12.13.54.333:9200
和
http://65.98.54.10:9200
在第一服務器我有數據的100K(id
= 1至id
= 100K),並在第二臺服務器我有100k的數據(id
= 100k + 1到200k)。
我想在兩個服務器上的一個請求中搜索關鍵字obama
的文本。這可能嗎?
我有兩個ElasticSearch服務器之間平衡:裝載兩個elasticsearch服務器
http://12.13.54.333:9200
和
http://65.98.54.10:9200
在第一服務器我有數據的100K(id
= 1至id
= 100K),並在第二臺服務器我有100k的數據(id
= 100k + 1到200k)。
我想在兩個服務器上的一個請求中搜索關鍵字obama
的文本。這可能嗎?
你的問題有點泛泛......我會盡量不給出一個「取決於」的答案,但爲了做到這一點,我必須做出一些假設。
這兩臺服務器實際上是同一個elasticsearch集羣上的兩個節點嗎?我想是這樣。
你是否在一個由多個碎片組成的elasticsearch索引上索引數據?我想是這樣。 elasticsearch中的默認值是五個碎片,在您的情況下會導致一個節點上有兩個碎片,另一個節點上有三個碎片。
然後,您可以通過REST API將您的查詢發送到其中一個節點。查詢將在您查詢的索引(可能超過一個)由所組成的所有碎片上執行。如果您有副本,則查詢時可能也會使用副本分片。接收到查詢的節點將減少從所有分片返回最相關分支的搜索結果。
更具體地說,每個分片上的搜索階段很可能只會收集文檔ID和他們的分數。一旦您點擊的節點減少了結果,它就可以獲取所有必需的字段(通常爲_source field),僅用於它應該返回的文檔。
彈性搜索的好處在於,即使您對不同索引的數據編制索引,您也可以查詢多個索引,並且所有內容的工作方式與我所描述的相同。在一天結束時,每個索引都由碎片組成,並且用一個碎片查詢十個索引,每個索引與用十個碎片查詢一個索引相同。
我所描述的適用於elasticsearch使用的默認search_type,稱爲query_then_fetch
。還有其他的搜索類型,您可以在需要時最終使用,例如count不會執行任何reduce或fetch操作,只是返回在所有分片上執行它的查詢的命中數並返回所有命中的總和爲每個碎片。
Revendra庫馬爾,
Elasticsearch應該處理程序,爲您服務。 Elasticsearch是從零開始構建的,並進行分佈式搜索。
基本上,如果這些服務器在同一個集羣中,您將有兩個分片(第一個分辨率爲1到100k,第二個分辨率爲100001到200k)。當通過某種方式進行搜索時,它所擊中的服務器並不重要,它將在兩臺服務器上執行搜索並將結果返回給客戶端。 elasticsearch的內部行爲過於廣泛,無法在此解釋。
兩個節點是同一個羣集的一部分嗎? – concept47