{"query":{
"range": {
"date": {
"gte": "2020/01/01 00:00:00",
"lte": "2022/12/31 23:59:59",
"format": "yyyy/MM/dd HH:mm:ss"
}
}
},
"sort":{
"date":{
"order":"desc"
}
}
}
一个简单的时间范围查询并排序,数据量在1.7E,空间占有50G,三个主分片一个副分片,Next_doc的耗时极高,有什么优化方法吗
版本7.17.2 机械2T 16G内存
2 个回复
Charele - Cisco4321
赞同来自: WangChen
正常情况下,对时间的range查询不应该是这个类型的
Charele - Cisco4321
赞同来自: WangChen
开始我没明白为什么会出现这个查询,
我以为你对"date“字段做了什么特殊设置,所以让你贴下mapping设置看看。
后来明白了。要出现这个,要有两个条件
1 数据全部都命中你的范围查询条件,就是你索引里数据全是2020-2022年的。
2 你的字段里有空文档
就是说有些文档,它的"date"这个字段是没值的
(如果全有值,且全符合查询条件,就是matchAll了)
我想next_doc耗时大,可能大部分都在排序上吧,毕竟你的数据量这么大。
我说不出什么有效的方法。
如果你经常有这样需要对"date“结果排序的查询,不妨设下"index.sort.field"这个设置。