2017-08-01 9 views
0

私のクエリのパフォーマンスを最適化しようとしています。私のクエリにはソートと集計があります。さらに、データをバッチでフェッチする必要があるので、fromおよびsizeパラメータを指定します。エラスティック検索 - サイズとパラメータを含むクエリのキャッシュ結果

私は集計が毎回実行されないようにする要求キャッシュを使用しています。しかし、私はクエリデータをキャッシュする方法を見つけることができませんでした。

を見て:デフォルトでは https://www.elastic.co/guide/en/elasticsearch/reference/current/shard-request-cache.html

」、リクエストのキャッシュは、検索 リクエストサイズ= 0、そう、それはないでしょうキャッシュヒットが、それは ヒットをキャッシュするの結果をキャッシュします。合計、集計、および提案が含まれます。

このような場合に検索結果をキャッシュする方法はありますか?

サンプルクエリ:

GET myIndex/_search?request_cache=true 
{ 
    "size": 20, 
    "from": 0, 
    "query": { ... }, 
    "sort": { ... }, 
    "aggregations": { ... } 
} 

答えて

0

この仮定がまだ成立し。回避策は、集計部分をキャッシュできるように、1つの検索クエリと1つの集約クエリの2つのクエリを送信することです。

あなたは実際に遅い部分が何であるかを知りましたか?検索またはaggs?

+0

検索が遅いです。 Aggsは非常に高速です。私のクエリにはソートがあり、inner_hitsのフェッチもあります。 –

+0

プロファイルAPIを使用するか、kibana x-packをインストールしてこのAPIのUIを使用して、クエリのどの部分が遅いかを確認できます。インデックス構造を変更して最適化する必要があるかどうかを判断するのに役立ちます。ソートのためにdoc値をキャッシュするために、より多くのファイルシステムキャッシュを持つためにもっと多くのメモリを持っていると、遠くから分かりにくいかもしれません。 – alr

+0

ありがとうございます。私はプロファイルapiを使用し、breakdownはcreate_weightとbuild_scorerがクエリの大部分を占めていることを示しています。 –

関連する問題