初めまして。
Aggregationのやり方について質問です。
ElasticsearchのDynamic Mappingを使って任意のフィールド名でindexさせようと考えています。
ただ、後々ある一定のルールで集計をかけたいため、フィールド名のprefixでバケッティング後、
集計できないかと思い、方法を探しています。
あくまで例なのですが、例えば
PUT aggregation_test/factor/1
{
"text_name": "taro"
}
PUT aggregation_test/factor/2
{
"text_address": "tokyo"
}
PUT aggregation_test/factor/3
{
"radio_gender": "male"
}
PUT aggregation_test/factor/4
{
"select_hobby": [ "car", "bike" ]
}
上記のようなデータに対してフィールドがtext_で始まるドキュメントを
バケッティングした状態で各データに対して集計をかけたい場合にどうすれば良いでしょうか?
実際には希望通りには動きませんが、イメージ的には下記のような感じです。
GET aggregation_test/factor/_search
{
"aggs": {
"form_values": {
"terms": {
"field": "text_*"
}
}
}
}
これに対して
"aggregations": {
"form_values": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "taro",
"doc_count": 1
},
{
"key": "tokyo",
"doc_count": 1
}
]
}
}
このようなデータが返ってきてほしいのですが・・・。
Elasticsearch自体の勉強不足で、うまく説明できていないかもしれませんが、
もし解決策をお持ちの方がいらっしゃいましたらご教示いただけますと幸いです。
宜しくお願い致します。