2016-09-01 3 views
0

私の質問では、バケットを1つのスカラーに集約しています。私は各バケットに興味がないので(私の場合は数千万)、返された結果からそれらを削除したいと思います。すなわち、私は "サイズ"のような何かをしたい:すべてのヒットを隠すために0。出来ますか?ElasticSearchの結果でバケツを隠す方法は?

例えば:

{ 
    "size": 0, 
    "aggs": { 
    "pop": { 
     "terms": { 
     "field": "account_number", 
     "size": 0 
     }, 
     "aggs": { 
      "average": { 
       "avg": { 
        "field": "price" 
       } 
      } 
     } 
    }, 
    "sum_of_avg": { 
     "sum_bucket": { 
     "buckets_path": "pop>average" 
     } 
    } 
    } 
} 

結果:

[...] 
"aggregations": { 
    "pop": { 
     "doc_count_error_upper_bound": 40851, 
     "sum_other_doc_count": 93441329, 
     "buckets": [...] <== i don't want this 
    }, 
    "sum_of_avg": { 
     "value": 128.0768325884469 
    } 
+0

これはこの質問に関連しています: [link](http://stackoverflow.com/questions/38081739/how-to-perform-a-pipeline-aggregation-without-returning-all-buckets-in-elasticse ) – bcl

答えて

-1

私が何をしたいことは、 "カーディナリティ" の集約だと思います。それはあなたに別個の値の数を返します。

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-cardinality-aggregation.html

例:

GET devdev/alert/_search 
{ 
    "size": 0, 
    "aggs": { 
    "agg1": { 
     "cardinality": { 
     "field": "price" 
     } 
    } 
    } 
} 
+0

実際、各バケットについて、私は集計関数を適用し、私の例のようにすべての結果を集計します。 :) – bcl

0

私はちょうど関連する質問にanswerを掲載。要求は次のようになります。この場合

curl -XPOST 'http://localhost:9200/<index>/_search?filter_path=aggregations.sum_of_avg' -d ' 
{ 
    "size": 0, 
    "aggs": { 
    "pop": { 
     "terms": { 
     "field": "account_number", 
     "size": 0 
     }, 
     "aggs": { 
      "average": { 
       "avg": { 
        "field": "price" 
       } 
      } 
     } 
    }, 
    "sum_of_avg": { 
     "sum_bucket": { 
     "buckets_path": "pop>average" 
     } 
    } 
    } 
} 

PS:あなたは別の解決策を見つけた場合は、ここでそれを共有してください。ありがとう!

関連する問題