Q:size
のインデックス(_stats
を使用)を最後に更新してから、どのようにして最新のものにすることができますか?Elasticsearch:インデックスの最新サイズを取得
私はElasticsearchクラスタでいくつかのパフォーマンステストを行っています。コードは効果的である:
Create INDEX
Set refresh_interval to -1 (don't refresh while inserting)
Insert 2000 documents into INDEX
Set refresh_interval back to 1 (default)
Force a refresh of INDEX
Get _stats of INDEX (particularly to get the size)
私の理解では、その文書are indexedは、彼らが最初にESメモリ内のバッファに挿入されたとき。リフレッシュを強制すると、ESはバッファにまだ残っているドキュメントのLuceneセグメントを作成します。 (ドキュメントバッファがLuceneセグメントにも含まれている場合がいくつかあります)
私はrefreshing the indexがその時点までのドキュメントを検索可能にすると確信しています。私はESが検索可能にする文書が_stats
にも反映されることを期待しています。しかし、私は、統計リクエストのサイズが非確定的に不正確であることを発見しました(例えば23602の代わりに520バイトのようなものかもしれません)。
私はリフレッシュ後、_stats
コールの前に、さまざまな成功を収めて自分のプロセスをスリープ状態にしました。しかし、最新の統計情報を取得するための適切で一貫したソリューションがあるかどうかは疑問です。 (あるいは私の理解に何かが間違っている場合)。
例
すぐに2000のドキュメントを挿入した後、私は、ある意味では(繰り返し)を手動_stats
を実行し、結果を確認します。ある程度の時間のために、5秒の周りに、私はこれが表示されます。
"primaries": {
"docs": {
"count": 2000,
"deleted": 0
},
"store": {
"size_in_bytes": 520,
"throttle_time_in_millis": 0
を次に(ESが突然最近の変更と一致になると)、私はわかります
"primaries": {
"docs": {
"count": 2000,
"deleted": 0
},
"store": {
"size_in_bytes": 23602,
"throttle_time_in_millis": 0
この結果をします新しい文書が追加されない限り、無期限に存続します。
を参照して、ユニットテストのためにも使用されていますか?私たちにいくつかの数字とあなたが何を期待しているかを示してください。 – Val
ああ、そうです。 '_stats'呼び出しでインデックスのサイズが正しくないことがわかりました。私は、 'bulk'呼び出しで1000個の文書(それぞれタイムスタンプ、ダブル、文字列のリストを含む)を索引付けします。インデックス上で 'refresh'を呼び出します。それから私はインデックス上で 'stats'を呼び出します。応答は、合計で130バイトのインデックスを示します。私はすぐにSenseから '_stats'を手動で呼び出すことができ、135976バイトがあることを知ることができます(これは、インデックスの要約ページにこの巨大で妥当な数字が表示されます)。 – FluxLemur
実行しているコマンド(コード)のリストを表示できますか? – Val