2016-11-22 6 views
0

これは明らかにES内部についての質問です。同じ文書をElasticSearchにもう一度ドロップすると、それを再インデックスするのでしょうか?

私が持っているのは、ESの上に構築されたカスタム検索エンジンで、複数のベンダーからのデータを提供しています。最後の索引付け以降に特定の文書が変更されているかどうかを調べるには(たとえば、ベンダーからの文書を定期的に再プルするときなど、一部の仕入先に「その日から変更された文書のみを与える」という方法はありません)それは何らかの形で修正のためにそれをインデックスに入れてESにドロップしますiff文書が変更されました。

質問:ESは内部でドキュメントチェックサムを追跡して、が実際ににインデックスを再作成する必要があるかどうかを確認しますか? (もちろん、私はいくつかのフィールド、タイムスタンプなどが各GETで動的に更新されるHTMLではないと推測しています)。

もしそうであれば(つまり、同一の書類を再インデックスすると償却原価はごくわずかです)、それは明らかに私の更新を簡略化します。

+0

同じ文書IDを使用すると、同じ文書を何度も再インデックスすることができ、検索結果は変更されません。 – Val

+0

@Val:私は理解しますが、私の質問は、同じ文書を何度も何度も再インデックスするコストです。 – LetMeSOThat4U

+0

私たちは何通の文書を書きましたか、その潜在的な再インデックスの頻度は何ですか? – Val

答えて

1

アップデートAPIを使用すると、ops https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html#_detecting_noop_updatesを検出できません。ここではno opのソースコードを見ることができます。 https://github.com/elastic/elasticsearch/blob/master/core/src/main/java/org/elasticsearch/action/update/UpdateRequestBuilder。 「余分な仕事」コメントに注意してください。それは間違いなく考慮すべきものです。

更新APIは、バニラの一括挿入よりもはるかに遅い傾向にあることに注意してください。同一のIDを持つ同じインデックスのドキュメントにインデックスを付けるときにESが_バージョン番号をインクリメントするようにする通常の挿入は高速になりますが、GCとインデックスの作成も行われます。

+0

また、「ESは内部的にドキュメントチェックサムを追跡して、実際にインデックスを再インデックスする必要があるかどうかを確認しますか?私は確かに答えがないと確信しています。私がhttps://github.com/elastic/elasticsearch/blob/master/core/src/main/java/org/elasticsearch/action/update/UpdateHelper.java#L178を正しく理解していれば、これは読んでいるあなたが挿入しているドキュメントと比較して、それらが同じものかどうかを評価する(チェックサムまたはそのタイプのシステム番号を使用するのとは対照的に) – evanv

関連する問題