2016-08-12 21 views
0

マーケットIDでグループ化されたElastic Searchから合計の最大のmsを取得するために、次のエラスティック検索クエリがあります。エラスティックサーチで集計された結果がxより大きい場合

{ 
    "from": 0, 
    "size": 0, 
    "query": { 
    "filtered": { 
    "filter": { 
     "and": [ 
     { 
      "term": { 
      "@type": "tradelog" 
      } 
     }, 
     { 
      "range": { 
      "@timestamp": { 
       "gte": "now-7d", 
       "lt": "now" 
      } 
      } 
     }, 
     { 
      "range": { 
      "TotalMs": { 
       "gte": 200, 
       "lt": 2000 
      } 
      } 
     } 
     ] 
    } 
    } 

}, 
"aggregations": { 
     "the_name": { 
     "terms": { 
      "field": "Market", 
      "order" : { "totalms_avg" : "desc" } 
     }, 
     "aggregations": { 
      "totalms_avg": { 
       "avg": { 
        "field": "TotalMs" 
       } 
      } 
     } 
     } 
    } 
} 

このクエリは、私は彼らが含まれるようにしたくないので、私のデータに外れ値です1つの結果を持っているいくつかのバケットを返します。カウントが5未満のバケットを除外することは可能ですか? SQLの 'HAVING'節に相当する弾性検索。

答えて

3

はい、あなたはmin_doc_count setting

... 
"aggregations": { 
     "the_name": { 
     "terms": { 
      "field": "Market", 
      "order" : { "totalms_avg" : "desc" }, 
      "min_doc_count": 5 
     }, 
     "aggregations": { 
      "totalms_avg": { 
       "avg": { 
        "field": "TotalMs" 
       } 
      } 
     } 
     } 
    } 
} 
を使用することができます
関連する問題