本文整理汇总了PHP中Elastica\Document::setScript方法的典型用法代码示例。如果您正苦于以下问题:PHP Document::setScript方法的具体用法?PHP Document::setScript怎么用?PHP Document::setScript使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Elastica\Document
的用法示例。
在下文中一共展示了Document::setScript方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testUpdateDocument
public function testUpdateDocument()
{
$client = $this->_getClient();
$index = $client->getIndex('elastica_test');
$type = $index->getType('update_type');
$id = 1;
$type->addDocument(new Document($id, array('name' => 'bruce wayne batman', 'counter' => 1)));
$newName = 'batman';
$document = new Document($id);
$script = new Script("ctx._source.name = name; ctx._source.counter += count", array('name' => $newName, 'count' => 2));
$document->setScript($script);
$type->updateDocument($document, array('refresh' => true));
$updatedDoc = $type->getDocument($id)->getData();
$this->assertEquals($newName, $updatedDoc['name'], "Name was not updated");
$this->assertEquals(3, $updatedDoc['counter'], "Counter was not incremented");
}
示例2: testSetScript
public function testSetScript()
{
$document = new Document();
$script = new Script('ctx._source.counter += count');
$script->setParam('count', 1);
$this->assertFalse($document->hasScript());
$document->setScript($script);
$this->assertTrue($document->hasScript());
$this->assertSame($script, $document->getScript());
}
示例3: testUpdateDocumentByDocumentWithScript
public function testUpdateDocumentByDocumentWithScript()
{
$index = $this->_createIndex();
$type = $index->getType('test');
$client = $index->getClient();
$newDocument = new Document(1, array('field1' => 'value1', 'field2' => 10, 'field3' => 'should be removed', 'field4' => 'value4'));
$script = new Script('ctx._source.field2 += count; ctx._source.remove("field3"); ctx._source.field4 = "changed"');
$script->setParam('count', 5);
$newDocument->setScript($script);
// should use document fields because document does not exist, script is avoided
$client->updateDocument(1, $newDocument, $index->getName(), $type->getName(), array('fields' => '_source'));
$document = $type->getDocument(1);
$this->assertInstanceOf('Elastica\\Document', $document);
$data = $document->getData();
$this->assertArrayHasKey('field1', $data);
$this->assertEquals('value1', $data['field1']);
$this->assertArrayHasKey('field2', $data);
$this->assertEquals(10, $data['field2']);
$this->assertArrayHasKey('field3', $data);
$this->assertEquals('should be removed', $data['field3']);
$this->assertArrayHasKey('field4', $data);
$this->assertEquals('value4', $data['field4']);
// should use script because document exists, document values are ignored
$client->updateDocument(1, $newDocument, $index->getName(), $type->getName(), array('fields' => '_source'));
$document = $type->getDocument(1);
$this->assertInstanceOf('Elastica\\Document', $document);
$data = $document->getData();
$this->assertArrayHasKey('field1', $data);
$this->assertEquals('value1', $data['field1']);
$this->assertArrayHasKey('field2', $data);
$this->assertEquals(15, $data['field2']);
$this->assertArrayHasKey('field4', $data);
$this->assertEquals('changed', $data['field4']);
$this->assertArrayNotHasKey('field3', $data);
}