Elasticsearch按日期范围按组计算

时间:2017-12-22 08:59:13

标签: elasticsearch elasticsearch-5

我有这样的文件:

{
body: 'some text',
read_date: '2017-12-22T10:19:40.223000'
}

有没有办法按日期查询过去10天内发布的文件数?例如:

2017-12-22, 150  
2017-12-21, 79  
2017-12-20, 111  
2017-12-19, 27  
2017-12-18, 100  

2 个答案:

答案 0 :(得分:2)

是的,你可以使用date_histogram聚合轻松实现这一点,如下所示:

{
  "query": {
    "range": {
      "read_date": {
        "gte": "now-10d"
      }
    }
  },
  "aggs": {
    "byday": {
      "date_histogram": {
        "field": "read_date",
        "interval": "day"
      }
    }
  }
}

答案 1 :(得分:1)

要接收过去10天的天数,您可以每天发布以下查询:

{
  "query": {
    "range": {
      "read_date": {
        "gte": "now-11d/d",
        "lte": "now-1d/d"
      }
    }
  },

    "aggs" : {
        "byDay" : {
            "date_histogram" : {
                "field" : "read_date",
                "calendar_interval" : "1d",
                "format" : "yyyy-MM-dd" 
            }
        }
    }
}

到以下网址:http:// localhost:9200 / Index_Name / Index_Type / _search?size = 0

将大小设置为0可以避免执行搜索的提取阶段,从而使请求更有效。有关更多信息,请参见this elastic documentation