配置index sorting后,正在写入的索引_search非常慢

Elasticsearch | 作者 wangxinrong | 发布于2022年01月04日 | 阅读数:114

我这边有一个业务用的ES,索引是按天后缀创建,每天的数据有5亿条,大部分查询是这样的:
{
    "size": 10,
    "query": {
        "bool": {
            "filter": [
            {
               "range": {
                 "create_time": {
                   "gte": "2022-01-04T08:00:00.000Z",
                   "lte": "2022-01-04T10:00:00.000Z"
                 }
               }
             }
            ]  
        }
    },
    "sort": [
        {
            "create_time": {
                "order": "desc"
            }
        }
    ]
}
 
按照默认的设置这个查询比较慢,需要十几到几十秒,后来给索引设置了写入时排序index sorting,索引setting增加了如下设置
"index": {
 "sort": {
          "field": "create_time",
          "order": "desc"
        }
}
 
文档在写入时按create_time排序,效果很明显,查询基本都是瞬时返回。
但目前有一个问题,就是对于当天正在有写入的索引(refresh_interval为默认的1s),即使不加任何条件,只是调一次_search接口,都需要几十秒才返回。只有停止写入,或者将refresh_interval设置成比较大的值以后,才会正常。
查询里加profile:true参数,对当天慢的索引,和之前那些很快的索引做查询,得到的结果基本是一样的,所以现在也没办法确认这个慢实际是哪边导致的。
这个情况正常吗,会是哪边导致的慢呢,有办法优化吗?
 
已邀请:

God_lockin

赞同来自:

你是对create_time做sort,在query里面也是以它排序的吗
 

要回复问题请先登录注册