如何在elastica php中一次性更新多个数据?

sas*_*ori 3 php elastica

如何在 elastica 中更新多个数据?逻辑就像,我有一个数组或一串 id,然后我需要一次性更新连接到每个或该 id 的所有数据的状态属性,那么该怎么做?,本文档没有有样品

http://elastica.io/api/classes/Elastica.Bulk.Action.UpdateDocument.html
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

Igo*_*nko 5

这是可能的,但您不能只更新一个字段,因为 ES 不是这样工作的。

您需要先检索完整文档,更改字段值并再次将文档保存到 ES(使用与之前相同的 id)。

除此之外,多个 upsert(添加和更新操作之间没有区别)如下所示:

$client = new Elastica\Client();

// Call method from client
$client->addDocuments([
    new Elastica\Document(/*...*/),
    new Elastica\Document(/*...*/),
    new Elastica\Document(/*...*/),
]);

// Or from index
$client->getIndex('index')->addDocuments([
    new Elastica\Document(/*...*/),
    new Elastica\Document(/*...*/),
    new Elastica\Document(/*...*/),
]);

// Or from type
$client->getIndex('index')->getType('type')->addDocuments([
    new Elastica\Document(/*...*/),
    new Elastica\Document(/*...*/),
    new Elastica\Document(/*...*/),
]);
Run Code Online (Sandbox Code Playgroud)