2016-10-25 7 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 Stefanを不安定にする可能性があることはどういう意味ですか?ありがとう – ChintanShah25

+1

特定のノードに存在するいくつかの断片からのみ結果を得たいので、他の断片よりも多くの作業が必要になります。つまり、メモリやCPUの負荷が高い可能性があります。これは不安定になる。 @ ChintanShah25 –

関連する問題