Объединение запросов
Выполнение полных запросов типа 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/8.17/joining-queries.html