2016-10-25 13 views
0

爲什麼在我一次又一次運行相同查詢時從主分片和副本分片獲取文檔。正因爲如此,我得到了不同的搜索結果。從主分片或副本獲取文檔

實施例響應 - 1 - 副本 「_shard」:0, 「_node」: 「node_1」, 「_index」: 「sample_ind」, 「_type」: 「my_type」, 「_id」:「 E1" , 「_score」:2.9560382,

Response-2 Primary shard        
    "_shard": 0, 
    "_node": "node_2", 
    "_index": "sample_ind", 
    "_type": "my_type", 
    "_id": "E2", 
    "_score": 2.956294, 

節點-1具有副本碎片和節點2具有主碎片。當我多次運行相同的查詢時,查詢獲取的工作原理以及爲什麼響應來自主分片和副本分片?

回答

1

這是基本的Elasticsearch信息,我強烈建議去文檔超過最少掌握關於Elasticsearch的基礎知識。

簡而言之,當查詢進入集羣時,需要查詢的碎片可以是主節點或副本。沒關係,它們具有相同的數據,並且可以平等地執行查詢。我不建議僅針對初選或副本運行查詢,因爲它會在羣集中創建熱點並可能破壞羣集的穩定性。

此外,初選和複製品的得分應該是幾乎與一樣。計算分數的算法的一部分涉及分片中存在多少文檔以及這些文檔中的詞條的頻率。棘手的部分是,當您更新或刪除文檔時,該文檔不會立即從磁盤中刪除,而是僅標記爲刪除。在後臺,Elasticsearch合併分片文件並採用較小的相似大小的段,並創建更大的段並刪除較小的段。在合併時,標記爲已刪除的文檔實際上已從索引中刪除。

在此之前,這些文檔不會在搜索中返回,但在計算上述分數時會考慮這些文檔。

+0

你是什麼意思的熱點和它如何可以破壞羣@Andrei斯特凡?謝謝 – ChintanShah25

+1

因爲您只需要來自特定節點上的某些碎片的結果,那麼這些碎片將比其他碎片有更多的工作要做。這意味着存儲器和/或CPU壓力的機會較高。這意味着不穩定。 @ ChintanShah25 –