[解決済み] リフレッシュとフラッシュ
質問
Elasticsearchのインデックスに新しい文書が登録されると、インデックス操作の1秒後には検索が可能になります。しかし、このドキュメントをすぐに検索可能にするために、強制的に
_flush
または
_refresh
という操作をインデックスに対して行います。これらの 2 つの操作の違いは何ですか - 結果はどちらも同じで、ドキュメントはすぐに検索可能になるようです。
これらの操作のそれぞれは、具体的に何をするのでしょうか?
ESのドキュメントでは、この問題に深く取り組んでいないようです。
どのように解決するのですか?
回答は正しいのですが、もう少し詳しく説明する価値があると思います。
リフレッシュは効果的に lucene インデックスリーダの再オープンを呼び出し、検索可能なデータのポイントインタイムスナップショットが更新されるようにします。この lucene の機能は、lucene near real-time api の一部です。
この機能は elasticsearch refresh はドキュメントを検索可能にしますが、fsync を呼び出さないため、ディスクに書き込まれたドキュメントが永続化されることはありません。データの耐久性を保証するのは lucene commit であり、これははるかに高価です。
lucene reopenは1秒ごとに呼び出すことができますが、lucene commitで同じことはできません。
lucene を通して、かなり頻繁に reopen を呼び出すことによって、ほぼリアルタイムで新しいドキュメントを検索できるようになりますが、データがディスクに書き込まれ、fsynced され、したがって安全になるように、まだ commit を呼び出す必要があります。
Elasticsearchはシャード(事実上Luceneインデックス)ごとにトランザクションログを追加し、まだコミットされていない書き込み操作を保存することでこのquot;問題"を解決しています。トランザクションログは同期され、安全であるため、まだコミットされていない文書に対しても、任意の時点で耐久性を確保することができます。1秒ごとに自動的に更新されるため、ほぼリアルタイムで文書を検索することができます。また、万が一の場合でも、トランザクションログを再生することで、最終的に失われた文書を復元することができます。トランザクションログの良いところは、内部で他のことに使えることです。例えば、リアルタイムで idで取得 .
ある elasticsearch flush は効果的に lucene のコミットを引き起こし、トランザクションログも空にします。なぜなら、いったんデータが lucene レベルでコミットされると、lucene 自身によって耐久性が保証されるからです。フラッシュは api として公開されており、微調整を行うことができます。フラッシュは、トランザクションログに追加された操作の数、その大きさ、そして最後にフラッシュが行われた時間に応じて自動的に行われます。
関連
-
[解決済み] フィルタリングされた]に[クエリ]が登録されていません。
-
[解決済み] Elasticsearch 2.0でリモートアクセス/リクエストを有効にするにはどうすればよいですか?
-
[解決済み] Logstashとelasticsearchの間のデータブローカー/メッセージングシステムとして、RedisとRabbitMQの比較
-
[解決済み] elasticsearchノードを停止/シャットダウンする方法は?
-
[解決済み] Elasticsearch 2.1: 結果ウィンドウが大きすぎる (index.max_result_window)
-
[解決済み] elasticsearchのQuery DSLにおけるmustとfilterの違いは何ですか?
-
[解決済み] elasticsearchのマッチとタームクエリ
-
[解決済み] ESクラスタの設定方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] フィルタリングされた]に[クエリ]が登録されていません。
-
[解決済み] Elasticsearch 2.0でリモートアクセス/リクエストを有効にするにはどうすればよいですか?
-
[解決済み] Logstashとelasticsearchの間のデータブローカー/メッセージングシステムとして、RedisとRabbitMQの比較
-
[解決済み] elasticsearchノードを停止/シャットダウンする方法は?
-
[解決済み] Elasticsearch 2.1: 結果ウィンドウが大きすぎる (index.max_result_window)
-
[解決済み] elasticsearchのQuery DSLにおけるmustとfilterの違いは何ですか?
-
[解決済み] elasticsearchのマッチとタームクエリ
-
[解決済み] ESクラスタの設定方法は?