Elasticsearch 搜索查询使用 elasticsearch python API 返回“空”响应

问题描述 投票:0回答:1

我在实时应用程序中使用elasticsearch py client

应用程序执行搜索查询聚合,例如“过去 10 天内结算金额字段的总和”。

大多数查询都可以正常运行。然而,有一小部分失败,默默地返回以下内容。

{
   "took":0,
   "timed_out":false,
   "_shards":{
      "total":0,
      "successful":0,
      "skipped":0,
      "failed":0
   },
   "hits":{
      "total":{
         "value":0,
         "relation":"eq"
      },
      "max_score":0.0,
      "hits":[
         
      ]
   }
}

当重复相同的查询时,响应是正确的,包含聚合字段和预期值。

{
  "took" : 191,
  "timed_out" : false,
  "_shards" : {
    "total" : 756,
    "successful" : 756,
    "skipped" : 632,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 0,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "total_settled_amount" : {
      "value" : 0.0
    },
    "unique_customer_count" : {
      "value" : 0
    }
  }
}

我添加了一些重试,它似乎与负载问题有关,因为在没有明显延迟(1秒)的情况下重试查询将得到完全相同的错误结果。

这是一个查询示例

GET cases-*/_search
{
  "from": 0,
  "size": 1000,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "transactionAnnouncedEvent.transaction.processedAt": {
              "from": "2024-08-29T00:00:00.000Z",
              "to": "2024-08-29T13:46:49.000Z",
              "include_lower": true,
              "include_upper": true,
              "boost": 1
            }
          }
        },
        {
          "bool": {
            "should": [
              {
                "term": {
                  "field1": {
                    "value": "abc",
                    "boost": 1
                  }
                }
              }
            ],
            "adjust_pure_negative": true,
            "boost": 1
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  },
  "_source": {
    "includes": [
      "caseId"
    ],
    "excludes": []
  },
  "aggs": {
    "total_settled_amount": {
      "sum": {
        "field": "settledAmount"
      }
    }
  }
}

elasticsearch 返回此类“空响应”而不是“429 状态代码”的原因可能是什么?

python elasticsearch
1个回答
0
投票

所以要澄清一下。 即使没有找到任何文档,搜索请求也不应返回 429。它应该返回 200,并带有

0 hits

类似这样:

{
  "took": 0,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 0,
      "relation": "eq"
    },
    "max_score": null,
    "hits": []
  }
}

至于您的聚合未显示...这不是预期的行为。

这可能是一个错误吗?或者您的搜索查询不包含聚合?

© www.soinside.com 2019 - 2024. All rights reserved.