我在实时应用程序中使用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 状态代码”的原因可能是什么?
所以要澄清一下。 即使没有找到任何文档,搜索请求也不应返回 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": []
}
}
至于您的聚合未显示...这不是预期的行为。
这可能是一个错误吗?或者您的搜索查询不包含聚合?