在elasticsearch

时间:2016-03-04 00:31:04

标签: elasticsearch

我想做的是为每个月计算每个城市的(事物)数量

我试过了:

获取每个城市每个月的公寓数量

GET /bla bla/_search
{
  "size" : 0,
  "aggs": {
    "whateveryouwant": {
      "date_histogram": {
        "field": "posting_date",
        "interval": "month",
        "min_doc_count": 1
      },
      "aggs": {
        "anything": {
          "terms": {
            "field": "city"
          }
        }
      }
    }
  }
}

但问题是它不是一个月,而是每个月的第一天。

任何线索请问如何解决?

1 个答案:

答案 0 :(得分:0)

实际上它将在key_as_string显示该月的第一个日期。但文件计数实际上是整月的汇总。

E.g。

   "aggregations": {
      "month_histogram": {
         "buckets": [
            {
               "key_as_string": "2016-01-01T00:00:00.000Z",
               "key": 1388534400000,
               "doc_count": 4276
            }
         ]
      }
   }

您可以使用以下查询验证计数,并将计数与聚合结果匹配。

POST blah blah/_count
{
   "query": {
      "filtered": {
         "filter": {
            "bool": {
               "must": [
                  {
                     "range": {
                        "posting_date": {
                           "gte": "2016-01-01",
                           "lte": "2016-01-31"
                        }
                     }
                  }
               ]
            }
         }
      }
   }
}