PythonでElasticsearchからAggregationsの結果を10件以上取得する

ElasticsearchでAggregationsを使って集計処理を行っていたところ、どうも件数が少なかった。
で調べてみたところ、どうやら抽出結果と同じくこちらもデフォルトでは10件までしか取得できないらしい。

で、集計結果を10件以上取得するにはどうすれば良いのかなと調べてみたところ、どうやらクエリ内でサイズを指定して、そこから取得する必要があるようだ。上限は10,000件らしい。

Sponsored Links

s_base_query = {
        'query':{'bool':{'must':[],'should':[]}},
        'size': 0,
        'aggs':{'count':{
            'terms':{'field':'service','size':10000},
            'aggs':{
                'd_count':{'terms':{'field':'method'}}
                }
            }}
        }

 

あまりないと思うけど、集計件数が10,000超えた場合とか、通信量が大きすぎて一度に取ってこれなかった場合だとどうするのだろうか…?少し調べた限りだとscrollでは取ってこれないらしく、一度に取ってこれないほどの量になったらpartitionで分割して取ってくるという方法が一般的なようだ。

【参考】

 


Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*