代码之家  ›  专栏  ›  技术社区  ›  ehsan shirzadi

按日期范围分组的Elasticsearch计数

  •  7
  • ehsan shirzadi  · 技术社区  · 7 年前

    我有这样的文件:

    {
    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 回复  |  直到 7 年前
        1
  •  7
  •   Val    7 年前

    是的,您可以使用 date_histogram 聚合,如下所示:

    {
      "query": {
        "range": {
          "read_date": {
            "gte": "now-10d"
          }
        }
      },
      "aggs": {
        "byday": {
          "date_histogram": {
            "field": "read_date",
            "interval": "day"
          }
        }
      }
    }
    
        2
  •  2
  •   Mark    4 年前

    要接收过去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" 
                }
            }
        }
    }
    

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

    将大小设置为0可以避免执行搜索的获取阶段,从而提高请求的效率。看见 this elastic documentation 了解更多信息。