Ваш вопрос немного общий ... Я постараюсь не дать ответ «это зависит», но для этого мне нужно сделать пару предположений.
Являются ли эти два сервера фактически двумя узлами в одном кластере поиска elasticsearch? Наверное, так.
Вы проиндексировали данные по индексу elasticsearch, составленному из более чем одного осколка? Наверное, так. По умолчанию в elasticsearch есть пять осколков, что в вашем случае приведет к наличию двух осколков на одном узле и три на другом.
Затем вы можете просто отправить запрос на один из этих узлов через REST API. Запрос будет выполнен на всех черепах, из которых состоит индекс (может быть даже более одного), который вы запрашиваете. Если у вас есть реплики, то чередование реплик может быть использовано также во время запроса. Затем узел, получивший ваш запрос, уменьшит результаты поиска, полученные от всех осколков, возвращающих наиболее релевантные.
Чтобы быть более конкретным, фаза поиска на каждом осколке, скорее всего, будет собирать идентификаторы документов и их счет. Как только удаленный узел уменьшит результаты, он может получить все необходимые поля (обычно _source field) только для документов, которые он должен вернуть.
Что хорошего в elasticsearch, так это то, что даже если вы индексировали данные по разным индексам, вы можете запросить несколько индексов, и все будет работать так же, как я описал. В конце дня каждый индекс состоит из осколков, и запрос десяти индексов с одним осколком - это то же самое, что и запрос одного индекса с десятью осколками.
То, что я описал, относится к умолчанию search_type, который использует поиск elasticsearch, называемый query_then_fetch
. Существуют другие типы поиска, которые в конечном итоге можно использовать, когда это необходимо, например, счетчик, который не уменьшает и не извлекает, а просто возвращает количество обращений к запросу, выполняющему его на всех осколках, и возвращает сумму всех обращений для каждого осколка.
Являются ли эти два узла частью одного и того же кластера? – concept47