Объединение запросов

OpenSearch предоставляет следующие запросы, которые выполняют операции объединения и оптимизированы для масштабирования на нескольких узлах:

OpenSearch является распределенной системой, в которой данные распределены по нескольким узлам. Поэтому выполнение операции JOIN, аналогичной SQL, в OpenSearch требует значительных ресурсов. В качестве альтернативы OpenSearch предоставляет следующие запросы, которые выполняют операции объединения и оптимизированы для масштабирования на нескольких узлах:

Запросы для поиска вложенных полей

  • Вложенные запросы (nested queries): Действуют как обертки для других запросов, чтобы искать вложенные поля. Объекты вложенных полей ищутся так, как будто они индексированы как отдельные документы.

Запросы для поиска документов, связанных через тип поля объединения

Эти запросы устанавливают родительско-дочерние отношения между документами в одном индексе:

  • has_child запросы: Ищут родительские документы, дочерние документы которых соответствуют запросу.
  • has_parent запросы: Ищут дочерние документы, родительские документы которых соответствуют запросу.
  • parent_id запросы: Ищут дочерние документы, которые связаны с конкретным родительским документом.

Настройка выполнения запросов

Если параметр search.allow_expensive_queries установлен в значение false, то объединяющие запросы не будут выполняться.