# Не правильная работа terminate\_after

**URL:** <https://discuss.elastic.co/t/terminate-after/281344>\
**Category:** Вопросы на русском языке\
**Created:** [August 13, 2021, 11:33am UTC](https://discuss.elastic.co/t/terminate-after/281344 "2021-08-13T11:33:38Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![romanenkoss](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/romanenkoss/32/92956_2.png) [@romanenkoss](https://discuss.elastic.co/u/romanenkoss)\
**Post date:** [August 13, 2021, 11:33am UTC](https://discuss.elastic.co/t/terminate-after/281344/1 "2021-08-13T11:33:38Z")

</div>

Добрый день.  
Столкнулся с проблемой в использовании terminate\_after. Мы работаем с индексом в 4 миллиарда документов, состоит из 200 шардов, судя по документации эластика terminate\_after применяется к каждому шарду, установив terminate\_after = 500 000, я расчитываю на то что прерываение произойдет когда количество документов в запросе будет больше 100 миллионов. На практике если запрос с количеством больше 100 миллионов документов то прерывание происходит так как надо, но в моем случае я столкнулся с тем, когда документов меньше 100 миллионов, также происходит прерываение, начиная с запросов у которых от 93 миллионов результатов. В чем может быть проблема? Я пока не могу понять это баг или нормально поведение эластика, ответа нигде не могу найти. Спасибо за помощь.

```auto
{
	"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
  }
}

```

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [August 13, 2021, 3:36pm UTC](https://discuss.elastic.co/t/terminate-after/281344/2 "2021-08-13T15:36:32Z")

</div>

> [@romanenkoss](#):
>
> В чем может быть проблема?

Как вы правильно отметили:

> [@romanenkoss](#):
>
> terminate\_after применяется к каждому шарду, установив terminate\_after = 500 000

Однако, ваше убеждение

> [@romanenkoss](#):
>
> я расчитываю на то что прерываение произойдет когда количество документов в запросе будет больше 100 миллионов.

базируется на не правильном предположении, что каждая шарда вернет вам одинаковое количество документов. На самом деле, эти 93 миллиона, скорее всего распределены не равномерно.

Например, если у вас 100 шард находят 505,000 документов и останавливаются на 500,000, а другие 100 шард находят 450,000, то результат будет - 500,000 \* 100 + 450,000 \* 100 = 95,000,000.

---

<div class="post-metadata">

**Author:** ![romanenkoss](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/romanenkoss/32/92956_2.png) [@romanenkoss](https://discuss.elastic.co/u/romanenkoss)\
**Post date:** [August 16, 2021, 6:25am UTC](https://discuss.elastic.co/t/terminate-after/281344/3 "2021-08-16T06:25:26Z")

</div>

Спасибо за ответ, это все объясняет.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [September 13, 2021, 6:25am UTC](https://discuss.elastic.co/t/terminate-after/281344/4 "2021-09-13T06:25:29Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
