Elasticsearch文本字段上的日期范围查询



我的文档中有两个日期字段,分别是date_field_1date_field_2。所有文档都有date_feild_1数据,但date_filed_2数据中很少有空字符串。因此,date_field_1被标记为日期字段,date_field_2被标记为文本字段。

现在当我尝试执行查询时,

{"range": {"date_field_1": {"gte": "2022-05-23", "lte": "2022-05-23"}}}

我得到正确的结果。但是当我尝试同样的date_field_2我得到空的结果。是否有一种方法可以将范围查询应用于date_field_2而不是空文档?

你最终可以使用regex:

{
"range": {
"date_field_2": "2022-0[3-6]-[0-9][0-9]"
}
}

上述查询将返回2022-03-012022-06-30之间的任何内容
基本上您请求的数据包含在date_field_2中包含2022-0的值,然后是3-6范围内的任何数字,然后是-0-9范围内的任何2个数字

请注意它也会返回错误的值,如果它们存在(如2022-03-87),但这是一个不同的故事

最新更新