2016-05-31 10 views
2

私はelasticsearchを初めて使っていて、filterとgroup byに似た何かをするクエリを実行しようとしています。ElasticSearchアグリゲーション - フィルターとグループby

「用語」を使用して(フィルタを使用して)フィルタを実行し、グループをクエリで実行することはできましたが、両方を実行するクエリは作成できませんでした。

私が使用したグループ化するための

{ 
    "size": 0, 
    "aggs": { 
    "group_by_city": { 
     "filter": { 
      "bool": { 
       "must": [ 
       { 
        "term": { 
        "account": "a" 
        } 
       }, 
       { 
        "term": { 
        "appName": "b" 
        } 
       }, 
       { 
        "range": { 
        "timestamp": { 
         "from": 1464713893304, 
         "to": 1465022700000 
        } 
        } 
       } 
       ] 
      } 
      }, 
     "aggs": { 
     "average_timing": { 
      "avg": { 
      "field": "t.timing1" 
      } 
     } 
     } 
    } 
    } 
} 

をグループ化することなく、私のクエリです:

{ 
    "size": 0, 
    "aggs": { 
    "group_by_country": { 
     "terms": { 
     "field": "country" 
     }, 
     "aggs": { 
     "average_balance": { 
      "avg": { 
      "field": "t.timing1" 
      } 
     } 
     } 
    } 
    } 
} 

任意のアイデアどのように私は2つを組み合わせることができますか?

+0

動作しないクエリを表示します。 – AndreKR

答えて

1

ElasticSearchのデータサブセットにいくつかのアナリティクスを提示しなければならなかったときも同様の問題がありました。私はfilteraggsを組み合わせてこれを解決しました。クエリに基づいて、私はこのような何かを考えることができます:

{ 
    "size": 0, 
    "filter": { 
     "bool": { 
      "must": [ 
       { 
        "term": { "account": "a" } 
       }, 
       { 
        "term": { "appName": "b" } 
       }, 
       { 
        "range": { 
         "timestamp": { 
          "from": 1464713893304, 
          "to": 1465022700000 
         } 
        } 
       } 
      ] 
     } 
    }, 
    "aggs": { 
     "group_by_country": { 
      "terms": { "field": "country" }, 
      "aggs": { 
       "average_balance": { 
        "avg": { 
         "field": "t.timing1" 
        } 
       } 
      } 
     } 
    } 
} 

私はあなたの問題の私の理解が正しい、これはあなたを助け願っています。

+0

うん、それは仕事、ありがとう! – danieln