如何在Elasticsearch中编写带时间间隔的日期字段范围查询?
正确的Elasticsearch查询格式(获取距今超过365天的文档)
你尝试的 "lte": "capture_date-365d" 写法不符合Elasticsearch的语法规则——日期范围查询里的相对时间运算只能以now(当前系统时间)作为基准,不能直接用字段名做减法。
完整的正确查询(包含doc_type过滤)
{ "query": { "bool": { "must": [ { "match": { "doc_type": "AP - ACH CHECKS" } }, { "range": { "capture_date": { "lte": "now-365d" } } } ] } } }
仅保留日期筛选的简化查询
如果不需要doc_type的匹配条件,单独的日期筛选逻辑如下:
{ "query": { "range": { "capture_date": { "lte": "now-365d" } } } }
上述查询的逻辑是:筛选出capture_date字段值早于(或等于)当前时间往前推365天的文档,完全符合你“获取距今超过365天的文档”的需求。
内容的提问来源于stack exchange,提问作者ahkam
相关产品推荐
相关产品推荐

