分析elasticsearch慢速请求时为什么数字不匹配

nbnkbykc  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(0)|浏览(292)

我有一些出乎意料的慢查询,所以我运行了分析api(ElasticSearch7.4)。但是,它并不能解释这种缓慢性,因为所有组件最多需要几毫秒,而查询“花费”的时间超过1秒: took" : 1254 下面是查询,它使用 applicationId 用于路由(它使用 query_string 而不是典型的 must 子句,但这不会影响查询性能。注意,索引有一个配置的默认排序时间戳(desc)):

POST indexname/_search?routing=cbcd0350-ba63-11e9-a4af-ed719166c0ae
{
    "profile": true,
    "query": {
        "bool": {
            "must": {
                "query_string": {
                    "query": "action:foo"
                }
            },
            "filter": [
                {
                    "terms": {
                        "applicationId": [
                            "cbcd0350-ba63-11e9-a4af-ed719166c0ae"
                        ]
                    }
                },
                {
                    "range": {
                        "timestamp": {
                            "gte": "1601142184297",
                            "lte": "1601143384297"
                        }
                    }
                }
            ]
        }
    },
    "sort": [
        {
            "timestamp": {
                "order": "desc"
            }
        }
    ]
}

以下是概要结果:

"profile" : {
    "shards" : [
      {
        "id" : "[9pyht_PVS0mTX_qoJMGhqg][indexname][12]",
        "searches" : [
          {
            "query" : [
              {
                "type" : "BooleanQuery",
                "description" : "+action:foo #ConstantScore(applicationId:cbcd0350-ba63-11e9-a4af-ed719166c0ae) #timestamp:[1601142184297 TO 1601143384297]",
                "time_in_nanos" : 9193115,
                "breakdown" : {
                  "set_min_competitive_score_count" : 0,
                  "match_count" : 0,
                  "shallow_advance_count" : 0,
                  "set_min_competitive_score" : 0,
                  "next_doc" : 4475919,
                  "match" : 0,
                  "next_doc_count" : 5994,
                  "score_count" : 0,
                  "compute_max_score_count" : 0,
                  "compute_max_score" : 0,
                  "advance" : 243183,
                  "advance_count" : 18,
                  "score" : 0,
                  "build_scorer_count" : 38,
                  "create_weight" : 75323,
                  "shallow_advance" : 0,
                  "create_weight_count" : 1,
                  "build_scorer" : 4392639
                },
                "children" : [
                  {
                    "type" : "TermQuery",
                    "description" : "action:foo",
                    "time_in_nanos" : 818107,
                    "breakdown" : {
                      "set_min_competitive_score_count" : 0,
                      "match_count" : 0,
                      "shallow_advance_count" : 0,
                      "set_min_competitive_score" : 0,
                      "next_doc" : 0,
                      "match" : 0,
                      "next_doc_count" : 0,
                      "score_count" : 0,
                      "compute_max_score_count" : 0,
                      "compute_max_score" : 0,
                      "advance" : 605683,
                      "advance_count" : 6012,
                      "score" : 0,
                      "build_scorer_count" : 56,
                      "create_weight" : 24653,
                      "shallow_advance" : 0,
                      "create_weight_count" : 1,
                      "build_scorer" : 181702
                    }
                  },
                  {
                    "type" : "ConstantScoreQuery",
                    "description" : "ConstantScore(applicationId:cbcd0350-ba63-11e9-a4af-ed719166c0ae)",
                    "time_in_nanos" : 1548337,
                    "breakdown" : {
                      "set_min_competitive_score_count" : 0,
                      "match_count" : 0,
                      "shallow_advance_count" : 0,
                      "set_min_competitive_score" : 0,
                      "next_doc" : 0,
                      "match" : 0,
                      "next_doc_count" : 0,
                      "score_count" : 0,
                      "compute_max_score_count" : 0,
                      "compute_max_score" : 0,
                      "advance" : 1388326,
                      "advance_count" : 6012,
                      "score" : 0,
                      "build_scorer_count" : 54,
                      "create_weight" : 8210,
                      "shallow_advance" : 0,
                      "create_weight_count" : 1,
                      "build_scorer" : 145734
                    },
                    "children" : [
                      {
                        "type" : "TermQuery",
                        "description" : "applicationId:cbcd0350-ba63-11e9-a4af-ed719166c0ae",
                        "time_in_nanos" : 704814,
                        "breakdown" : {
                          "set_min_competitive_score_count" : 0,
                          "match_count" : 0,
                          "shallow_advance_count" : 0,
                          "set_min_competitive_score" : 0,
                          "next_doc" : 0,
                          "match" : 0,
                          "next_doc_count" : 0,
                          "score_count" : 0,
                          "compute_max_score_count" : 0,
                          "compute_max_score" : 0,
                          "advance" : 593783,
                          "advance_count" : 6012,
                          "score" : 0,
                          "build_scorer_count" : 54,
                          "create_weight" : 4011,
                          "shallow_advance" : 0,
                          "create_weight_count" : 1,
                          "build_scorer" : 100953
                        }
                      }
                    ]
                  },
                  {
                    "type" : "IndexOrDocValuesQuery",
                    "description" : "timestamp:[1601142184297 TO 1601143384297]",
                    "time_in_nanos" : 4533095,
                    "breakdown" : {
                      "set_min_competitive_score_count" : 0,
                      "match_count" : 0,
                      "shallow_advance_count" : 0,
                      "set_min_competitive_score" : 0,
                      "next_doc" : 542974,
                      "match" : 0,
                      "next_doc_count" : 5994,
                      "score_count" : 0,
                      "compute_max_score_count" : 0,
                      "compute_max_score" : 0,
                      "advance" : 212511,
                      "advance_count" : 1996,
                      "score" : 0,
                      "build_scorer_count" : 54,
                      "create_weight" : 1122,
                      "shallow_advance" : 0,
                      "create_weight_count" : 1,
                      "build_scorer" : 3768443
                    }
                  }
                ]
              }
            ],
            "rewrite_time" : 50858,
            "collector" : [
              {
                "name" : "CancellableCollector",
                "reason" : "search_cancelled",
                "time_in_nanos" : 2098312,
                "children" : [
                  {
                    "name" : "SimpleFieldCollector",
                    "reason" : "search_top_hits",
                    "time_in_nanos" : 812015
                  }
                ]
              }
            ]
          }
        ],
        "aggregations" : [ ]
      }
    ]
  }
}

问题是(除了查询速度慢之外),profileapi报告9193115毫微秒,这是9毫秒+2毫秒的收集。考虑到路由只能查询一个shard,那么还有哪些其他阶段可以使它变得更慢呢?
更新:当索引很重时搜索速度很慢(但是cpu和内存很好)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题