Руфлин / Elastica навальная вставка без обновления - PullRequest
0 голосов
/ 11 октября 2019

У меня есть код, который должен вставить огромное количество данных, НО ТОЛЬКО если doc _id не существует в индексе. Я нашел что-то вроде этого:

foreach($item as $i)
{
        $elasticBulk[] = new \Elastica\Document( $item->id, ['ico' => $item->id] );
}

$elasticType = $searchIndex->getType('doc');
$elasticType->addDocuments( $elasticBulk );

НО этот код перезаписывает все сохраненные элементы. Мне нужно вставить документ из массива, только если не существует в базе данных. Может кто-нибудь сказать мне, как это сделать в библиотеке Ruflin / Elastica?

1 Ответ

0 голосов
/ 11 октября 2019

Так что я думаю, что у меня есть. Если кому-то нужно знать, вот решение:

foreach( $items as $item )
{
    $doc = new \Elastica\Document( $item->id, ['ico' => $item->id] );
    $doc->setType($searchIndex->getType( 'doc' ));
    $elasticBulk[] = $doc;
}

$bulk = new \Elastica\Bulk($elastic);
$bulk->addDocuments($elasticBulk, \Elastica\Bulk\Action::OP_TYPE_CREATE);

try
{
    $bulk->send();
}
catch( \Elastica\Exception\Bulk\ResponseException $e )
{
}
...