Q:非洲食人族的酋长吃什么?

大数据量的情况下next_doc耗时极高怎么优化

Elasticsearch | 作者 WangChen | 发布于2022年07月05日 | 阅读数:1618

{"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内存
微信截图_20220705104526.png
已邀请:

Charele - Cisco4321

赞同来自: WangChen

把你的索引mapping贴出来看下呢。
正常情况下,对时间的range查询不应该是这个类型的

Charele - Cisco4321

赞同来自: WangChen

DocValuesFieldExistsQuery,
开始我没明白为什么会出现这个查询,
我以为你对"date“字段做了什么特殊设置,所以让你贴下mapping设置看看。
 
后来明白了。要出现这个,要有两个条件
1 数据全部都命中你的范围查询条件,就是你索引里数据全是2020-2022年的。
 
2 你的字段里有空文档
就是说有些文档,它的"date"这个字段是没值的
(如果全有值,且全符合查询条件,就是matchAll了)
 
 
我想next_doc耗时大,可能大部分都在排序上吧,毕竟你的数据量这么大。
我说不出什么有效的方法。
 
如果你经常有这样需要对"date“结果排序的查询,不妨设下"index.sort.field"这个设置。

要回复问题请先登录注册