Elastic Searchでクエリの検索速度を向上させる方法は?

Aug 16 2020

ホストはElasticSearchのAWSです。2TBのデータが6つのノードと30のインデックスにそれぞれ10個のシャードで保存されています。すべてのインデックスでの単純な検索は非常に遅く、数分かかります。

どこで間違えたの?それは正常ですか、設定が悪いですか、データが多すぎますか?

私のクラスター設定:

"search": {
     "max_queue_size": "1000",
     "queue_size": "1000",
     "size": "4",
     "auto_queue_frame_size": "2000",
     "target_response_time": "1s",
     "min_queue_size": "1000"
},

マイノード設定:

"os": {
     "refresh_interval_in_millis": 1000,
     "name": "Linux",
     "pretty_name": "CentOS Linux 7 (Core)",
     "arch": "amd64",
     "version": "4.15.0-1039-aws",
     "available_processors": 32,
     "allocated_processors": 2
}

ありがとうございました!

回答

3 ElasticsearchNinja Aug 16 2020 at 14:17

情報が非常に少ない非常に幅広い質問です。次のような詳細情報を提供してください。

  1. 持っているデータの量と各シャードのサイズ。
  2. 平均所要時間のサンプル検索クエリ。
  3. データノードのヒープサイズとallocated_processors、使用可能なプロセッサ(32)よりも非常に少ない(2)理由
  4. 検索クエリでフェッチしているドキュメントの数、つまりサイズパラメータ。
  5. 検索呼び出しがない場合の検索待ち時間
  6. elasticsearch(ES)の遅いログを検索する

検索パフォーマンスを改善するための10のヒントを参照できます。また、ヒントに記載されているいくつかのパラメーターの値を教えてください。また、クラスターオプティマイザーツールを試して、ESのクラスターとノードの設定を微調整することもできます。

コメントで説明されているように、問題をより効率的にデバッグするには、opsterの検索スローログブログを参照してください。

1 Jaycreation Aug 19 2020 at 11:20
1)I have 2TB data. Every index has 50GB or more. Each has 10 shards and a replica

それだけです。シャードの目標サイズは約50Gbである必要があります。設定を使用すると、それぞれ約5Gbになります。5シャード以下に縮小し、1セグメントに強制的にマージできます。パフォーマンスは大幅に改善する必要があります。

その後、Optstersが彼のブログで提供している他の良いアドバイスを見てください。それらはすべて関連しています。