Этот вопрос, вероятно, слишком широкий, чтобы ответить на что-нибудь полезное, но в целом у вас есть два варианта:
Индексируйте документ на главном узле, затем реплицируйте файлы индекса, которые были изменены, на все остальные узлы. Они обычно известны как основные / подчиненные установки. Первые версии Solr использовали для этого rsync
- так что Solr не нужно было ничего знать о самой репликации. Более поздние версии использовали HTTP для репликации файлов индекса. Если у вас уже есть индекс Lucene, который вы хотите сделать доступным на нескольких узлах, это самое простое решение, которое не требует фундаментальных изменений в вашем проекте.
Распределите документ, который будет добавлен в индекс, по всем известным репликам этого индекса / шарда. Процесс индексации происходит на каждом узле, и документ распространяется на узел до того, как он был добавлен в индекс. Это (упрощенно) то, что происходит, когда Solr работает в облачном / кластерном режиме (и то же самое делает и ESRC IIRC). Здесь также используются журналы транзакций и т. Д., Чтобы сделать его более устойчивым к сбоям на разных узлах.
Так что либо распространяйте обновления самостоятельно, либо распространяйте обновленный индекс.