2016-04-06 6 views
7

私はElasticsearchでインデックスリフレッシュに関する多くの記事を読んでいます。私は0より大きい異なる間隔の意味を理解しています。これは、連続したセグメント間の経過時間が検索可能になります。しかし、私はrefresh_interval: -1が正確に何をするのかは分かりません。私の理解では、それは自動索引リフレッシュを無効にする手段ですが、完全ではありません。 refresh_intervalが-1に設定されていても、Elasticsearchはセグメントを時折フラッシュします。自動リフレッシュが無効になっている場合、このフラッシング動作を管理するメカニズムが不思議です。Elasticsearchの-1 refresh_intervalはどういう意味ですか?

申し訳ありません私は投稿するコードがあまりないことを知っていますので、私は後に何を背景に少しの背景を与えるでしょう。私のアプリケーションは、ほぼリアルタイムの検索を必要としません。最終的な一貫性だけが必要です。しかしながら、この事実は、合理的でなければならない。すなわち、数秒から1分未満であり、半時間ではない。私はElasticsearchに任せて定期的にリフレッシュするのではなく、その都度リフレッシュするのが最善の時を決めることができるかどうか疑問に思っていました。その理由は、自動リフレッシュを無効にすると、アプリケーションのパフォーマンスの面でいくつかの利点が得られるからです。 JVMヒープサイズの使用量は、ガベージコレクションの間隔(下のグラフを参照)デフォルトでは

​​

答えて

8

あなたの理解に少し混乱があります。インデックスの更新とディスクへの書き込みは2つの異なるプロセスであり、必ずしも関連しているわけではないため、refresh_intervalが-1であってもまだセグメントに関する書き込みが行われています。

ドキュメントのインデックスが作成されると、ドキュメントはインメモリバッファに追加され、translogファイルに追加されます。リフレッシュが行われると、バッファ内のドキュメントが新しいセグメントに書き込まれます。にfsyncがない場合、セグメントが開かれて検索可能になり、バッファがクリアされます。 translogはまだにクリアされておらず、実際には何もディスクに保存されていません(fsyncがなかったため)。

ここで、リフレッシュが起こっていないとしましょう。インデックスの更新はありません。ドキュメントを検索することはできません。セグメントはキャッシュ内に作成されません。

設定値hereは、フラッシュ(ディスクへの書き込み)が発生したときに指示します。 translogが512MBのサイズに達したとき、または30分後にデフォルトで。これは実際にはディスク上のデータを永続化しています、他はすべてファイルシステムのキャッシュにあります(ノードが消滅した場合やマシンが再起動した場合、キャッシュは失われ、translogが唯一の救済です)。

+0

これは多くの意味があります。なぜなら、私はインデックス作成が多いときにまだ書き込まれているセグメントしか観察しないからです。 –

1

の間にあまり積極的に上昇し、index.refresh_intervalは1秒に設定されています。実際には、特にインデクシング時に、ESでの高価な操作と呼ばれることがあります。 refresh_intervalを増やすと、そのことに気付くことができます。

index.refresh_intervalを-1に設定すると、これを無効にすると、ESへのインデックス作成時に大きな利益を得ることができます。あなただけの

curl -XPUT "http://localhost:9200/$INDEX_NAME/_settings" -d '{ "index" : { "refresh_interval" : "-1" }}' 

#index data...... 

curl -XPUT "http://localhost:9200/$INDEX_NAME/_settings" -d '{ "index" : { "refresh_interval" : "1s" }}' 

(あなたはインデックスデータを終えたときにそれを再度有効にする)REFRESH_INTERVALを無効にする必要がありますそして、あなたは一貫性を確保するために、インデックスの後にあなたの条件に応じて適切な値を設定することがあります。 有用な記事: - https://sematext.com/blog/2013/07/08/elasticsearch-refresh-interval-vs-indexing-performance/

希望すると助かります!

+0

私の質問は、それが無効になっていても、セグメントはまだLuceneレベルの下にフラッシュされています。リフレッシュ間隔でない場合、このフラッシュを制御しますか? –

関連する問題