gnext
November 12, 2018, 2:41am
1
Aggregationsでtermsでグループ化した上でsumを使用するとデータ数によりdoc_count_error_upper_boundが0件にならず正常にsumの値を取得できない場合があります。
"terms": {"field": "category.value", "size": 200}
sizeを指定すれば取得できるようになりますが、データ数によっては処理に時間がかかったり指定したsize以上のデータが存在する可能性もあります。
確実にdoc_count_error_upper_boundを0に抑える方法はあるのでしょうか?
mnozawa
(Makoto Nozawa)
November 14, 2018, 2:45am
2
size
に十分大きい数値を設定するのが良いです。
size
の他にshard_size
で制御することもできます。
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#_shard_size_3
あらかじめcardinality aggregationで指定すべきsizeの値を確認することもできますが、そちらにも同様の問題が付きまといます。
何れにせよ、集計するデータ量と計算負荷のトレードオフは避けられません。
johtani
(Jun Ohtani)
November 14, 2018, 5:06am
3
データの件数がどのくらいかがわからないですが、対象のインデックスのnumber_of_shardsを1にはできないですか?
1 Like
gnext
November 15, 2018, 2:12am
4
1インデックスに対してカテゴリ別(sumの対象ごと)に約10万件程度を想定しています。
インデックス全体でのデータ件数は増えていく可能性もあります。
この場合、shard数を1にしてパフォーマンス等で懸念されることはありますでしょうか?
gnext
November 15, 2018, 2:13am
5
shard_sizeというのもあるのですね。いろいろ指定して試してみようと思います。
回答ありがとうございます。
1 Like
johtani
(Jun Ohtani)
November 15, 2018, 3:03am
6
system
(system)
Closed
December 13, 2018, 3:03am
7
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.