のすべての結果を取得するための最も効果的な方法があり、どのI次のクエリがあります。集約
GET my-index-*/my-type/_search
{
"size": 0,
"aggregations": {
"my_agg": {
"terms": {
"script" : "code"
},
"aggs": {
"dates": {
"date_range": {
"field": "created_time",
"ranges": [
{
"from": "2017-12-09T00:00:00.000",
"to": "2017-12-09T16:00:00.000"
},
{
"from": "2017-12-10T00:00:00.000",
"to": "2017-12-10T16:00:00.000"
}
]
}
},
"total_count": {
"sum_bucket": {
"buckets_path": "dates._count"
}
},
"bucket_filter": {
"bucket_selector": {
"buckets_path": {
"totalCount": "total_count"
},
"script": "params.totalCount == 0"
}
}
}
}
}
}
このクエリの結果は、バケツの束です。私が必要とするのは、私のバケツのキーのリストです。問題は集計結果のサイズがデフォルトで10であり、それらを取得した後で、私のbucket_filter
はそれらを合計カウントでフィルタリングします。これらのうちのいくつかだけを取得します。すべての結果が必要です。つまり、"size" = n
、ここでn
はcode
という別個のカウントであるため、データが失われることはありません。私は何十億もの書類を持っているので、私の場合、n
は約30.000です。私はクエリを実行しようとしたときに、 "メモリ不足"がクラスタ上で発生したので、それは最良のアイデアではないと思います。クエリにすべての結果を得るための良い方法はありますか?