下面是我为搜索字段创建的映射
PUT /sample/_mapping
{
"properties": {
"webDateTime1": {
"type": "date",
"format": "dd-MM-yyyy HH:mm:ss||dd-MM-yyyy||hour_minute_second"
}
}
}如果我根据"04-04-2019 20:17:18“进行搜索,如果我根据”04-04-2019年“进行搜索,得到正确的数据,如果我根据"20:17:18”进行搜索,不知道总是得到空的结果。任何帮助都将不胜感激。
发布于 2020-04-03 13:33:41
当你摄入一些样本文档时:
POST sample/_doc/1
{"webDateTime1":"04-04-2019 20:17:18"}
POST sample/_doc/2
{"webDateTime1":"04-04-2019"}
POST sample/_doc/3
{"webDateTime1":"20:17:18"}然后在日期字段上进行聚合,
GET sample/_search
{
"size": 0,
"aggs": {
"dt_values": {
"terms": {
"field": "webDateTime1"
}
}
}
}您将看到这些值实际上是如何被索引的:
...
"buckets" : [
{
"key" : 73038000,
"key_as_string" : "01-01-1970 20:17:18",
"doc_count" : 1
},
{
"key" : 1554336000000,
"key_as_string" : "04-04-2019 00:00:00",
"doc_count" : 1
},
{
"key" : 1554409038000,
"key_as_string" : "04-04-2019 20:17:18",
"doc_count" : 1
}
]
...这就是为什么您对20:17:18的查询会让您头疼。
现在,您通常希望像这样使用range查询:
GET sample/_search
{
"query": {
"range": {
"webDateTime1": {
"gte": "20:17:18",
"lte": "20:17:18",
"format": "HH:mm:ss"
}
}
}
}注意format参数。但是,如果您没有在您的date字段中提供一个datetime,那么它将以unix时代为日期。
https://stackoverflow.com/questions/61012547
复制相似问题