Объединение запросов
Выполнение полных объединений в стиле SQL в распределённой системе, такой как Elasticsearch, крайне дорогостоящее. Вместо этого Elasticsearch предлагает два типа объединений, предназначенных для масштабирования по горизонтали.
-
nestedзапрос - Документы могут содержать поля типа
nested. Эти поля используются для индексирования массивов объектов, где каждый объект может быть запрошен (с помощьюnestedзапроса) как независимый документ. -
has_childиhas_parentзапросы - Между документами в одном индексе может существовать
joinполе-связь.has_childзапрос возвращает родительские документы, дочерние документы которых соответствуют указанному запросу, аhas_parentзапрос возвращает дочерние документы, родительский документ которых соответствует указанному запросу.
Также см. механизм поиска по значениям в terms запросе, который позволяет создавать terms запрос на основе значений, содержащихся в другом документе.
Примечания
Разрешить дорогостоящие запросы
Объединяющие запросы не будут выполнены, если search.allow_expensive_queries установлено в значение false.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/joining-queries.html