我有多个日期字段,我希望有一个日期范围查询来过滤它们中的任何一个。
例如,我的索引中可能有书籍,每本书可能有出版日期、出版日期、印刷日期和作者出生日期。
映射很简单(使用Elasticsearch.net Nest生成):
"printDate" : {
"type" : "date",
"format" : "strict_date_optional_time||epoch_millis"
},
我查看了范围查询和查询字符串范围- 两者都需要明确的字段名称并且似乎不支持通配符。
例如,这没有找到任何东西,但如果我使用真实的字段名称而不是"*Date"
:
"filter": [
{
"range": {
"*Date": {
"gte": "2010-01-01T00:00:00",
"lte": "2015-01-01T00:00:00"
}
}
}
]
我还尝试放入[2010-01-01 TO 2015-01-01]
查询字符串,但日期未正确解析 - 它还找到2010
或01
作为其他字符串的一部分(以及看似其他日期)。
另一种选择是在"should"
子句下列出每个字段并指定"minimum_should_match":1
,但这将使我维护所有日期字段的列表,这似乎不雅。
有没有办法在所有日期字段上搜索日期范围?