Elasticsearch:基于最早文档的日期范围搜索

oug3syen  于 7个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(73)

我写信是想问:构造查询以满足以下要求的最佳方法是什么:在布尔查询的筛选子句中指定日期范围,以便gte基于索引中最早的文档。
请考虑:

...
"filter":
{
  "range":
  {
    "CustomElasticSearchDateTime":
    {
      "gte": "OLDEST DOCUMENT", <-- (How to get the oldest document here based on the index being searched?)
      "lte": "OLDEST DOCUMENT + 6M/M",
      "relation": "WITHIN"
     }
  }
}
...

字符串
以下是我目前如何从索引中获取最旧的文档:

{
    "size": 1,
    "_source": false,
    "sort":
    {
        "CustomElasticSearchDateTime": "asc"
    },
    "query":
    {
        "match_all": {}
    }
}


但是似乎不可能将这个查询添加到上一个查询的gte下;或者,这是可能的。这里的任何帮助都将非常感谢。
谢谢你

wbrvyc0a

wbrvyc0a1#

(目前)不可能在单个查询中进行这种查询。
解决这个问题的另一种方法是利用固定间隔为6个月的date_histogram aggregation。第一个桶必须包含从最早的文档到6个月后创建的所有文档:

POST /index/_search?size=0
{
  "aggs": {
    "oldest_docs": {
      "date_histogram": {
        "field": "CustomElasticSearchDateTime",
        "fixed_interval": "6M"
      }
    }
  }
}

字符串
这可能不是你想要的,但这是最接近你需要的解决方案,至少我是这样理解的。

相关问题