2016-04-11 11 views
2

, когда я добавляю несколько серверов solr в качестве конечной точки и используя один клиент солярия для запроса на любой сервер solr; Я добавляю master/slave репликации в solr. пока я не пробовал, когда сервер для onecore (master или slave) не работает, клиент/солярий должен использовать доступную конечную точку.добавить несколько конечных точек solr unsing solarium

Я получаю эту ошибку:

Message: Solr HTTP error: HTTP request failed, Failed connect to 127.0.0.1:8983; No error 

потому, что я остановить Solr в порту 8983 и Solr работает на ведомом ядре в порту 9000, в этом случае IAM ищет для подключения к localhost2, если локальный не работают. Это мой код:

$config = array(
     "endpoint" => array("localhost" => array("host"=>"127.0.0.1", 
     "port"=>"8983", "path"=>"/solr", "core"=>"master",), 
     "localhost2" => array("host"=>"127.0.0.1", 
     "port"=>"9000", "path"=>"/solr", "core"=>"slave",) 

     )); 

    $client = new Solarium\Client($config); 
      $ping = $client->createPing(); 
      $client->ping($ping,"localhost2"); 
      $client->getEndpoints(); 

когда ключ локальный не работает, а ключ localhost2 является подножка в порту 9000 я получаю это сообщение Solr ошибка HTTP: HTTP запрос не удалось, не удалось подключиться к 127.0.0.1:8983 ; Нет ошибки

ANd выход $ client-> getEndpoints();

object(Solarium\Client) { 
    [protected] options => array(
     'adapter' => 'Solarium\Core\Client\Adapter\Curl', 
     'endpoint' => array(
      'localhost' => array(
       'host' => '*****', 
       'port' => '*****', 
       'path' => '/solr', 
       'core' => 'master' 
      ), 
      'localhost2' => array(
       'host' => '*****', 
       'port' => '*****', 
       'path' => '/solr', 
       'core' => 'slave' 
      ) 
     ) 
    ) 
    [protected] queryTypes => array(
     'select' => 'Solarium\QueryType\Select\Query\Query', 
     'update' => 'Solarium\QueryType\Update\Query\Query', 
     'ping' => 'Solarium\QueryType\Ping\Query', 
     'mlt' => 'Solarium\QueryType\MoreLikeThis\Query', 
     'analysis-document' => 'Solarium\QueryType\Analysis\Query\Document', 
     'analysis-field' => 'Solarium\QueryType\Analysis\Query\Field', 
     'terms' => 'Solarium\QueryType\Terms\Query', 
     'suggester' => 'Solarium\QueryType\Suggester\Query', 
     'extract' => 'Solarium\QueryType\Extract\Query', 
     'get' => 'Solarium\QueryType\RealtimeGet\Query' 
    ) 
    [protected] pluginTypes => array(
     'loadbalancer' => 'Solarium\Plugin\Loadbalancer\Loadbalancer', 
     'postbigrequest' => 'Solarium\Plugin\PostBigRequest', 
     'customizerequest' => 'Solarium\Plugin\CustomizeRequest\CustomizeRequest', 
     'parallelexecution' => 'Solarium\Plugin\ParallelExecution\ParallelExecution', 
     'bufferedadd' => 'Solarium\Plugin\BufferedAdd\BufferedAdd', 
     'prefetchiterator' => 'Solarium\Plugin\PrefetchIterator', 
     'minimumscorefilter' => 'Solarium\Plugin\MinimumScoreFilter\MinimumScoreFilter' 
    ) 
    [protected] eventDispatcher => object(Symfony\Component\EventDispatcher\EventDispatcher) { 
     [private] listeners => array() 
     [private] sorted => array() 
    } 
    [protected] pluginInstances => array() 
    [protected] endpoints => array(
     'localhost' => object(Solarium\Core\Client\Endpoint) { 
      [protected] options => array(
       'host' => '*****', 
       'port' => '*****', 
       'scheme' => 'http', 
       'path' => '/solr', 
       'core' => 'master', 
       'timeout' => (int) 5, 
       'key' => 'localhost' 
      ) 
     }, 
     'localhost2' => object(Solarium\Core\Client\Endpoint) { 
      [protected] options => array(
       'host' => '*****', 
       'port' => '*****', 
       'scheme' => 'http', 
       'path' => '/solr', 
       'core' => 'slave', 
       'timeout' => (int) 5, 
       'key' => 'localhost2' 
      ) 
     } 
    ) 
    [protected] defaultEndpoint => 'localhost' 
    [protected] adapter => null 
} 

ответ

1

Это, как мне удается переключаться между 'конечными точками':

$endpoints=[ 
    'endpoint' => [ 
      'foo' => [ 
       'host' => '127.0.0.1', 
       'port' => '9000', 
       'path' => 'foo', 
       'core' => 'foo', 
       'timeout' => 15 
      ], 
      'baz' => [ 
       'host' => '127.0.0.1', 
       'port' => '7464', 
       'path' => 'baz', 
       'core' => 'baz', 
       'timeout' => 15 
      ], 
    ] 
]; 
$solrClient = new Solarium\Client($config); 
$solrClient->setDefaultEndPoint('baz'); 

и функция setDefaultEndPoint сделает магия

setDefaultEndPoint

`