如何按多个术语分组事件?

时间:2017-10-12 19:50:29

标签: elasticsearch lucene elasticsearch-5

我如何按年份和月份进行分组?如果我留下1个术语,我的查询有效,例如Month。但我不能用多个术语分组。

GET traffic-data/_search?
{
 "size":0,
"query": {
    "bool": {
      "must": [
        { "match": {
          "VehiclePlateNumber": "111"
        }}
      ]
    } },
    "aggs" : {
        "years" : {
            "terms" : {
                "field" : "Year"
            },
            "aggs" : {
                "months" : { "by_month" : { "field" : "Month" } }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为你的问题的查询已经接近了,试试这个:

GET traffic-data/_search?
{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "VehiclePlateNumber": "111"
          }
        }
      ]
    }
  },
  "aggs": {
    "years": {
      "terms": {
        "field": "Year",
        "size": 100
      },
      "aggs": {
        "months": {
          "terms": {
            "size": 12, 
            "field": "Month"
          }
        }
      }
    }
  }
}

编辑 - 我假设您的月份是字符串关键字字段。如果情况并非如此(请包括映射),请告诉我,我会修改。