Ruflin / Elastica散装插入件,无更新

时间:2019-10-11 09:14:18

标签: elasticsearch bulk elastica

我有一个代码,仅当索引中不存在doc _id时,才需要插入大量数据。 我发现了这样的东西:

do{
    let decodeResponse = try JSONDecoder().decode(UserResponse.self, from: data)
    print("this is the json\(decodeResponse.user)")
}catch{
    print(error)
}

但是此代码将重写所有存储的项目。仅当数据库中不存在文件时,才需要批量插入文件。有人可以告诉我在Ruflin / Elastica库中如何做吗?

1 个答案:

答案 0 :(得分:0)

所以我想我有。如果有人需要知道这里的解决方案:

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 )
{
}