Добрый день.
Столкнулся с проблемой в использовании terminate_after. Мы работаем с индексом в 4 миллиарда документов, состоит из 200 шардов, судя по документации эластика terminate_after применяется к каждому шарду, установив terminate_after = 500 000, я расчитываю на то что прерываение произойдет когда количество документов в запросе будет больше 100 миллионов. На практике если запрос с количеством больше 100 миллионов документов то прерывание происходит так как надо, но в моем случае я столкнулся с тем, когда документов меньше 100 миллионов, также происходит прерываение, начиная с запросов у которых от 93 миллионов результатов. В чем может быть проблема? Я пока не могу понять это баг или нормально поведение эластика, ответа нигде не могу найти. Спасибо за помощь.
{
"query": {
"bool": {
"should": [
{
"match": {
"name": {
"boost": 1000,
"query": "g"
}
}
},
{
"prefix": {
"name_full_reverse": {
"boost": 100,
"value": "g"
}
}
},
{
"multi_match": {
"fields": [],
"query": "g"
}
}
]
}
}
}
/_count?terminate_after=500000
{
"terminated_early": true,
"count": 93705326,
"_shards": {
"total": 200,
"successful": 200,
"skipped": 0,
"failed": 0
}
}
/_count
{
"count": 98221798,
"_shards": {
"total": 200,
"successful": 200,
"skipped": 0,
"failed": 0
}
}