按日期和类别分组弹性搜索查询

按日期和类别分组弹性搜索查询,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我在elasticsearch中有一个索引,并已导入以下json文件: {"index" : {"_id": "1"}} {"Name": "apple","Type": "fruit","Rate": "64","Date": "2016-01-24"} {"index" : {"_id": "2"}}`enter code here` {"Name": "grape","Type": "fruit","Rate": "100","Date": "2016-01-21"} {"index" :

我在elasticsearch中有一个索引,并已导入以下json文件:

{"index" : {"_id": "1"}}
{"Name": "apple","Type": "fruit","Rate": "64","Date": "2016-01-24"}
{"index" : {"_id": "2"}}`enter code here`
{"Name": "grape","Type": "fruit","Rate": "100","Date": "2016-01-21"}
{"index" : {"_id": "3"}}
{"Name": "banana","Type": "fruit","Rate": "72","Date": "2016-01-14"}
{"index" : {"_id": "4"}}
{"Name": "orange","Type": "fruit","Rate": "82","Date": "2016-01-13"}
{"index" : {"_id": "5"}}
{"Name": "mango","Type": "fruit","Rate": "53","Date": "2016-02-16"}
{"index" : {"_id": "6"}}
{"Name": "grapes","Type": "fruit","Rate": "56","Date": "2016-02-18"}
{"index" : {"_id": "7"}}
{"Name": "blueberry","Type": "fruit","Rate": "96","Date": "2016-02-25"}
{"index" : {"_id": "8"}}
{"Name": "watermelon","Type": "fruit","Rate": "124","Date": "2016-02-12"}
{"index" : {"_id": "9"}}
{"Name": "papaya","Type": "fruit","Rate": "75","Date": "2016-03-09"}
{"index" : {"_id": "10"}}
{"Name": "carrot","Type": "vegetable","Rate": "25","Date": "2016-01-21"}
{"index" : {"_id": "11"}}
{"Name": "ladyfinger","Type": "vegetable","Rate": "89","Date": "2016-01-26"}
{"index" : {"_id": "12"}}
{"Name": "potato","Type": "vegetable","Rate": "36","Date": "2016-02-14"}
{"index" : {"_id": "13"}}
{"Name": "tomato","Type": "vegetable","Rate": "45","Date": "2016-02-07"}
{"index" : {"_id": "14"}}
{"Name": "spinach","Type": "vegetable","Rate": "25","Date": "2016-02-24"}
{"index" : {"_id": "15"}}
{"Name": "raddish","Type": "vegetable","Rate": "21","Date": "2016-02-13"}
{"index" : {"_id": "16"}}
{"Name": "pumpkin","Type": "vegetable","Rate": "78","Date": "2016-03-10"}
{"index" : {"_id": "17"}}
{"Name": "lemon","Type": "vegetable","Rate": "98","Date": "2016-03-11"}
现在我想得到每个月每种类型的计数,到目前为止,我可以通过下面的elasticsearch查询按类别找到总计数组:

{
  "size": 0,
  "aggs": {
    "group_by_Type": {
      "terms": {
        "field": "Type"
      }
    }
  }
}

我想把这个数字按月计算。请帮忙

好的开始!现在,您只需将
间隔设置为
,然后将当前的
术语
聚合作为
日期\u直方图
聚合的子聚合,基本上如下所示:

{
  "size": 0,
  "aggs": {
    "group_by_month": {
      "date_histogram": {
        "field": "Date",
        "interval": "month"
      },
      "aggs": {
        "group_by_Type": {
          "terms": {
            "field": "Type"
          }
        }
      }
    }
  }
}
更新

如果您只想关注某个时间段,则可以添加一个查询来限制要聚合的文档集:

{
  "size": 0,
  "query": {
      "range": {
          "Date": {
              "gte": "2016-01-01T00:00:00.000Z",
              "lt": "2016-02-01T00:00:00.000Z"
          }
      }
  },
  "aggs": {
    "group_by_month": {
      "date_histogram": {
        "field": "Date",
        "interval": "month"
      },
      "aggs": {
        "group_by_Type": {
          "terms": {
            "field": "Type"
          }
        }
      }
    }
  }
}

非常感谢您的快速回复,您的查询有效。:)如果我只想获得2016年1月这样的特定月份的详细信息,该怎么办?事实上,我的索引太大,而且我的查询耗时很长。您可以添加一个查询,只关注所需的时间间隔。我已经更新了我的AnswerTested更新的查询,但它显示错误:“位置187处JSON中的意外字符串”