【问题标题】:Ruflin/Elastica bulk insert without update没有更新的 Ruflin/Elastica 批量插入
【发布时间】:2019-10-11 09:14:18
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: elasticsearch bulk elastica


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-03-16
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 2016-05-02
      • 2014-06-22
      • 2014-01-16
      • 2011-09-11
      • 2023-03-14
      相关资源
      最近更新 更多