2017-09-29 7 views
0

ElasticSearchはすぐに利用可能な状態でインデックスに文書をコミットするようにしたいと思います。つまり、私はESをデータベースとして使用しています。最新のデータを返すようリクエストしたいと思います。すぐに一貫性のあるElasticSearchに書き込むにはどうすればよいですか?

これを達成するために、私は遅く書いても問題はありませんが、これはESの意図された使用ではないことを認識していますが、私はおもちゃのプロジェクトに必要です。

本質的に、私はインデックス上のMySQL行ロックのようなものを探しています。あるいは、ドキュメントが挿入されるとすぐにディスクとメモリにフラッシュされます。

私のプロジェクトでスピードは問題ではありません。今私は挿入文書のループの後に200ミリ秒待ってこれを達成しています。

+0

ElasticSearchで[GET Consistency(and Quorum)]を複製する可能性があります(https://stackoverflow.com/questions/14080808/get-consistency-and-quorum-in-elasticsearch) –

答えて

0

インデックスを作成するときはrefreshの設定を有効にしてください(hereを参照)。 一度に複数のドキュメントにインデックスを作成する場合は、最後に_refreshendpointを呼び出すことができます。 両方のオプションは、パフォーマンス(書き込みフラッシュ、キャッシュ無効化など)に非常に重要な影響を与えます。

+0

?preference = _primaryをレプリカを無視するURL:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-preference.html – Pandawan

+0

回答のレプリカに関する部分が正しくありません - ドキュメントが明示的に状態です: "関連するプライマリとレプリカの断片(インデックス全体ではない)を直ちにリフレッシュする"。可能であれば、 'refresh = wait_for'を実行してください。不必要なマージからあなたを救うでしょう。 – xeraa

+0

レプリカ部分を削除しました。 –

関連する問題