Заставить CloudSollServer запускать импорт данных только на лидере

Я настроил кластер Solr из двух серверов с SolrCloud. В настоящее время у меня есть Мастер и Реплика.

Я хочу, чтобы данные импортировались на лидера, так как нет смысла делать дельта-импорт на ведомом (обновления не будут распространяться на лидера).

Из документации я понял, что CloudSollServer знает состояние кластера (полученное от Zookeeper) и по умолчанию отправляет все обновления только лидеру.

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

        SolrServer solrServer = new CloudSolrServer("localhost:2181");
        ModifiableSolrParams params = new ModifiableSolrParams();
        params.set("qt", "/dataimport");
        params.set("command", "delta-import");
        QueryResponse response = solrServer.query(params);

Но я вижу, что запросы по-прежнему идут на оба моих сервера: localhost: 8080 и localhost: 8983. Есть ли способ исправить это?


person Igor Kustov    schedule 11.04.2013    source источник


Ответы (1)


Просто замените инициализацию вашего сервера solr ниже

SolrServer solrServer = new CloudSolrServer("zkHost1:port,zkHost2:port");

Это заставит клиент сервера solr обращаться к zookeeper за состоянием solrcloud. Для получения более подробной информации прочитайте документацию CloudSolvServer для инициализации из ансамбля zookeeper.

person Community    schedule 28.10.2013