elasticsearch Elasticsearch范围查询未按预期工作
我试图通过应用日期类型字段上的范围(在本例中为“timeA”)来获取数据 我的问题是:elasticsearch Elasticsearch范围查询未按预期工作,elasticsearch,kibana,elasticsearch,Kibana,我试图通过应用日期类型字段上的范围(在本例中为“timeA”)来获取数据 我的问题是: { "query": { "bool": { "must": [ { "match_phrase": { "name": "A" } }, { "range": { "timeA": { "lte": 9
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"name": "A"
}
},
{
"range": {
"timeA": {
"lte": 9999
}
}
}
]
}
}
}
我没有任何少于1558891800000的数据
因此,预期输出必须为:
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
但我得到的实际输出是:
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1.287682,
"hits": [
{
"_index": "checktimestamp",
"_type": "doc",
"_id": "AWr4sdJv_fFf5JZrQhXl",
"_score": 1.287682,
"_source": {
"name": "A",
"timeA": 1558899000000,
"timeLocal": "27-1AM"
}
}
]
}
}
时间字段的类型为日期。
我的elasticsearch版本是5.6.10,Kibana版本是5.6.10
请说明这里的问题是什么,以及如何解决。
提前感谢。Elastic将4位数字解析为一年,这意味着它匹配年份小于或等于9999的文档,我假设这是您的所有数据 为了避免这种情况,您需要在映射中为日期字段定义一个严格的字段,这将允许潜入“yyy”格式。
或者,在这些查询中不要使用少于5位数的数字 谢谢Tom,现在我明白了为什么它没有返回预期输出。