Elasticsearch 2 + PHP поток прокрутки проблема - PullRequest
0 голосов
/ 21 октября 2018

Привет, может кто-нибудь сказать мне, пожалуйста, как выполнить прокрутку на Elasticsearch 2 через PHP библиотеку Ruflin \ Elastica?Согласно документации для ES2 первый запрос прокрутки должен привести к определенному индексу, тогда как следующие запросы вызываются без индекса только с параметром scroll_id.Поэтому я написал этот код:

/** @var Elastica\Client $elastic */
$elastic = $container->getService( 'elastica' );

// This first call works fine. I get the scroll_id.
$elasticScrollData = $elastic->getIndex( 'event' )->request( '_search?scroll=5m', 'GET', ['size' => 500, 'sort' => ['_doc']] )->getData();

$countAll = $elasticScrollData['hits']['total'];

saveToMongo( $elasticScrollData, $countAll, $elastic );


function saveToMongo( $scrollData, $countAll, \Elastica\Client $elastic )
{
    $documents = [];
    foreach ( $scrollData['hits']['hits'] as $item )
    {
        $doc = [];
        $doc['ico'] = (array)$item['_source']['ico'];
        ...         

        $documents[] = $doc;
    }

    try
    {
        saveDataToDb( $documents );
    }
    catch( \Exception $e )
    {
        echo '+++ insert exception: ' . $e->getMessage() . "\n";
    }

    // Here is the problem. It throws me an exception: No enabled connection
    $scrollData = $elastic->request( '_search/scroll', 'GET', ['scroll' => '5m', 'scroll_id' => $scrollData['_scroll_id']] )->getData();

    saveToMongo( $scrollData, $countAll, $offset, $elastic, $mongoCollection );
}

Что не так со вторым вызовом Elasticsearch?Почему выдает ошибку: нет включенного соединения?Надеюсь, кто-то знает, потому что я действительно не знаю.

1 Ответ

0 голосов
/ 22 октября 2018

Elastica\Client по умолчанию использует круговой пул соединений для решения проблемы с подключением. Если все соединения пропали, он выдает ClientException с сообщением No enabled connection 1 .

Проверьте сетевое соединение между PHP-скриптом и Elasticsearch и просмотрите конфигурацию для Elasticsearch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...