Elasticsearch «размер» значение не работает в условиях агрегации с разделами - PullRequest
2 голосов
/ 26 февраля 2020

Я пытаюсь разбить на страницы в указанном поле c, используя термины агрегации с разделами. Проблема в том, что количество возвращаемых терминов для каждого раздела не равно заданному мною параметру размера.

Я выполняю следующие шаги:

  1. Получите количество различных уникальных значений для поля с агрегацией "кардинальности". По моим данным, результат равен 21.

  2. . На веб-странице пользователь хочет отобразить таблицу с 10 элементами на странице.

    if unique_values % page_size != 0:
            partitions_number = (unique_values // page_size) + 1
        else:
            partitions_number = (unique_values // page_size) 
    

Чем я делаю этот простой запрос:

POST my_index/_search?pretty
{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "match": {
            "field_to_paginate": "foo"
          }
        }
      ]
    }
  },
  "aggs": {
    "by_pchostname": {
      "terms": {
        "size": 10,
        "field": "field_to_paginate",
        "include": {
          "partition": 0,
          "num_partitions": 3
        }
      }
    }
  }
}

Я ожидаю получить 10 результатов. Но если я выполню запрос, у меня будет только 7 результатов. Что мне здесь не хватает? Нужно ли здесь использовать другое решение?

В качестве примечания: я не могу использовать составное агрегирование, потому что мне нужно отсортировать результаты по doc_count по всему набору данных.

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Разделы в терминах агрегации делят значения на равные куски.

В вашем случае номер раздела num_partitions не равен 3, поэтому 21/3 == 7.

Разделения предназначены для получения большие значения порядка 1000 с.

1 голос
/ 26 февраля 2020

Вы можете использовать параметр shard_size. Я предлагаю прочитать эту часть руководства и работать с параметром shard_size

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...