Как работать с разделенными документами, не достигая пределов Elasticsearch - PullRequest
0 голосов
/ 11 февраля 2020

У нас есть родительские документы, проиндексированные в одном индексе, и дочерние документы, проиндексированные в другом. Причиной этого является производительность

  1. , поскольку у нас может быть тысяча детских документов.
  2. , чтобы иметь возможность разбивать на страницы детей по отдельности.

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

Требование поиска должно быть в состоянии сопоставить родительские + дочерние элементы, т.е. родитель, у которого есть сопоставление для себя или в дочерних элементах, а также совпадающие дочерние элементы [необязательно].

Таким образом, мы используем агрегации для дочерних элементов, чтобы получить родительские идентификаторы, а затем делаем другой запрос для родителей, используя OR условие, чтобы быть в состоянии разбить на родителей самостоятельно. т.е. родитель имеет совпадающее ИЛИ имеет идентификатор от дочерних совпадений

В настоящее время проблема заключается в том, что ответ агрегации может быть больше 10 000 (даже несколько раз), и мы не хотим его разрешать, изменяя конфигурацию search.max_buckets причина Это более или менее временное решение, и оно будет работать медленно.

Любая идея, как справиться с этой настройкой / требованием, чтобы иметь возможность разбивать на страницы родителей, разбивать на страницы детей, сортировать родителей, искать по родителям + детям, искать через только дети?

...