Как запросы _search работают в Elasticsearch?

#elasticsearch #elasticsearch-query

#elasticsearch #elasticsearch-запрос

Вопрос:

Вопрос заключается в следующем: «Как узлы Elasticsearch взаимодействуют, чтобы выдавать конкретный результат поиска, и каков поток поискового запроса?»

Я ссылался на следующие ссылки, чтобы понять, но они не очень понятны в том, что я пытаюсь понять.

  1. https://www.elastic.co/guide/en/elasticsearch/reference/master/ingest.html
  2. https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html

введите описание изображения здесь

Согласно приведенной выше документации,

  1. «Узлы данных» — это те, которые выполняют всю обработку при вызове запроса _search.
  2. «Входящие узлы» выполняют некоторую предварительную обработку перед индексацией данных.

Итак, верны ли эти два приведенных выше утверждения? Соответственно,

  1. Выполняют ли входящие узлы какую-либо роль при выполнении запроса _search?
  2. Выполняют ли узлы данных какую-либо роль при индексации данных?
  3. Выполняют ли какие-либо другие узлы какую-либо роль при поиске данных?

Или, если бы вы могли помочь объяснить поток поискового запроса (какой узел получает вызов API, какой узел фильтрует данные, какой узел выполняет агрегацию и т. Д.), Тогда это было бы действительно полезно.

Если это актуально, то я использую Elastic Search 7.5

Ответ №1:

  1. Выполняют ли входящие узлы какую-либо роль при выполнении _search запроса? если это выделенный ingest узел, то нет, если он также содержит данные (сегменты и реплики), то да.

  2. Выполняют ли узлы данных какую-либо роль при индексации данных? Да, узлы данных фактически содержат данные (сегменты и реплики), и в конечном итоге они отвечают за индексацию и поиск этих данных

  3. Выполняют ли какие-либо другие узлы какую-либо роль при поиске данных? Да, пожалуйста, обратитесь к ответственности за координирующую роль в ES.

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

Ниже приведены шаги в поисковом запросе—

  1. Координирующий узел получает запрос, и это может быть выделенный узел или узлы данных, выполняющие эту работу (по умолчанию).
  2. Координирующий узел пересылает запрос на узлы данных, которые содержат сегменты (первичные или реплики) для вашего поискового запроса.
  3. Узлы данных выполняют локальный поиск и отправляют результат обратно на координирующий узел.
  4. Координирующий узел будет агрегировать 10 лучших результатов поиска (по умолчанию 10) со всех узлов и отправлять ответ.