В нашем приложении у нас есть кластер эластичного поиска, общий для всех наших клиентов.
Типы запросов, направленных к этому кластеру, требуют значительных вычислительных ресурсов и могут занять минуты. Из-за типа данных в кластере, типов запросов, которые мы получаем, и нерегулярности, при которой они используются, мы не можем предсказать, когда эти запросы будут выполнены или выполнить какое-либо кэширование заранее. Если несколько клиентов делают запросы одновременно, они будут испытывать более медленную скорость ответа, чем обычно.
Для большинства клиентов это не проблема. Их данные недостаточно велики, чтобы заметить разницу (3 с -> 10 с иногда не имеют большого значения). Но для более крупных клиентов разница во времени может составлять минуты и очень заметна.
Что бы мы хотели, прежде всего, это последовательность, даже если в среднем эти операции выполнялись медленнее. Для этого мы бы хотели предоставить этим специальным клиентам выделенные узлы, в то время как все остальные клиенты используют общие узлы. На первый взгляд кажется, что единственный способ сделать это - создать выделенный кластер.

Но это добавляет издержки в любом приложении, которое взаимодействует с упругим поиском, чтобы сначала выполнить поиск кластера для маршрутизации. В идеале мы могли бы создавать выделенные узлы в кластере. Таким образом, приложение не должно знать о маршрутизации кластера, и конфигурация индекса может быть разделена между этими «виртуальными кластерами».

Каждый документ имеет идентификатор клиента, который мы можем использовать для распределения по узлам, используя _routing
. Но у этого есть свои проблемы. Во-первых, это не позволяет нам создавать общий c кластер по умолчанию. Во-вторых, это может означать, что выделенные узлы обмениваются данными о клиентах с другими клиентами - цель состоит в том, чтобы получить постоянные скорости, устраняя конфликт ресурсов узла. И, наконец, это не позволяет нам выделить несколько узлов для данного маршрута.
Существует ли способ создания правила маршрутизации, к которому можно явно добавлять узлы. например, я хочу добавить 3 узла к ключу маршрутизации 582123.
Можно ли создать правило маршрутизации по умолчанию для узлов, которые не соответствуют существующим маршрутам? Если нет, мы всегда можем иметь явный маршрут по умолчанию. Нам все еще нужно будет выполнить поиск приложения на маршруте, но это уменьшит сложность в мультикластерном сценарии.