我正在尝试使用Elasticsearch-php 6.0构建分面搜索,但我很难弄清楚如何使用日期范围聚合 . 这是我正在尝试做的事情:

映射样本:

"mappings": {
  "_doc": {
    "properties": {
      ...
      "timeframe": {
        "properties": {
          "gte": {
            "type": "date",
            "format": "yyyy"
          },
          "lte": {
            "type": "date",
            "format": "yyyy"
          }
        }
      }
      ...

在我的文档中,我有这个属性:

"timeframe":[{"gte":"1701","lte":"1800"}]

我希望能够显示带有日期范围滑块的构面,用户可以在其中输入范围(最小值 - 最大值) . 理想情况下,在给定当前查询的情况下,Elasticsearch聚合应自动返回这些最小值 .

这是我试图用“伪代码”写的聚合,给你一个想法:

"aggs": {
  "date_range": {
      "field": "timeframe",
      "format": "yyyy",
      "ranges": [{
          "from": min(timeframe.gte),
          "to": max(timeframe.lte)
      }]
  }
}

我想我需要使用日期范围聚合,最小/最大聚合和管道聚合,但是我读的越多,我就越困惑 . 我找不到如何把整个世界粘在一起 .

请记住,如果这不是实现此目的的正确方法,我可以更改映射和/或文档结构 .

谢谢 !