鉴于
some_date
字段在映射中定义为 date
,如果我想将文档与确切的日期进行匹配,建议的方法是使用带有 range
和 lte
的 gte
查询。
{
"range" : {
"some_date" : {
"gte": "2020-01-01",
"lte": "2020-01-01",
"format": "yyyy-MM-dd"
}
}
}
但是,它似乎也适用于正常的
term
查询
"term" : {
"some_date" : {
"value" : "2020-01-01"
}
}
上面的查询工作正常并返回预期结果。但是,没有关于此的明确文件。关于
term
查询 的 Elasticsearch 文档根本没有提及日期。
它建议不要对
term
字段使用 text
查询,但没有说明 term
查询是否可用于日期、数字、布尔值等内容 - 然而一切似乎都有效。
我的问题是:我们是否应该依赖日期字段在
term
查询中按预期运行的事实,或者,我们是否应该始终使用 range
查询。
请注意,
range
是一种术语级别查询。短语“术语级查询”定义了一组查询。 term
、terms
、range
等都是“term level queies”。