本文整理汇总了PHP中Elastica\Document::getData方法的典型用法代码示例。如果您正苦于以下问题:PHP Document::getData方法的具体用法?PHP Document::getData怎么用?PHP Document::getData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Elastica\Document
的用法示例。
在下文中一共展示了Document::getData方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: unmarshal
/**
* @param Document|array $documentOrSource Document object or source array
* @return Message
*
* @throws \Exception
* @throws GdbotsPbjException
*/
public function unmarshal($documentOrSource)
{
if ($documentOrSource instanceof Document) {
return $this->doUnmarshal($documentOrSource->getData());
}
return $this->doUnmarshal($documentOrSource);
}
示例2: addDocument
/**
* Adds the given document to the search index
*
* @param \Elastica\Document $doc Document with data
* @return \Elastica\Response
*/
public function addDocument(Document $doc)
{
$path = urlencode($doc->getId());
$type = Request::PUT;
// If id is empty, POST has to be used to automatically create id
if (empty($path)) {
$type = Request::POST;
}
$options = $doc->getOptions(array('version', 'version_type', 'routing', 'percolate', 'parent', 'ttl', 'timestamp', 'op_type', 'consistency', 'replication', 'refresh', 'timeout'));
$response = $this->request($path, $type, $doc->getData(), $options);
$data = $response->getData();
// set autogenerated id to document
if (($doc->isAutoPopulate() || $this->getIndex()->getClient()->getConfigValue(array('document', 'autoPopulate'), false)) && $response->isOk()) {
if (!$doc->hasId()) {
if (isset($data['_id'])) {
$doc->setId($data['_id']);
}
}
if (isset($data['_version'])) {
$doc->setVersion($data['_version']);
}
}
return $response;
}
示例3: _populateDocumentFieldsFromResponse
/**
* @param \Elastica\Response $response
* @param \Elastica\Document $document
* @param string $fields Array of field names to be populated or '_source' if whole document data should be updated
*/
protected function _populateDocumentFieldsFromResponse(Response $response, Document $document, $fields)
{
$responseData = $response->getData();
if ('_source' == $fields) {
if (isset($responseData['get']['_source']) && is_array($responseData['get']['_source'])) {
$document->setData($responseData['get']['_source']);
}
} else {
$keys = explode(',', $fields);
$data = $document->getData();
foreach ($keys as $key) {
if (isset($responseData['get']['fields'][$key])) {
$data[$key] = $responseData['get']['fields'][$key];
} elseif (isset($data[$key])) {
unset($data[$key]);
}
}
$document->setData($data);
}
}
示例4: updateDocument
/**
* Update document, using update script. Requires elasticsearch >= 0.19.0
*
* @param int $id document id
* @param array|\Elastica\Script|\Elastica\Document $data raw data for request body
* @param string $index index to update
* @param string $type type of index to update
* @param array $options array of query params to use for query. For possible options check es api
* @return \Elastica\Response
* @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html
*/
public function updateDocument($id, $data, $index, $type, array $options = array())
{
$path = $index . '/' . $type . '/' . $id . '/_update';
if ($data instanceof Script) {
$requestData = $data->toArray();
} elseif ($data instanceof Document) {
$requestData = array('doc' => $data->getData());
if ($data->getDocAsUpsert()) {
$requestData['doc_as_upsert'] = true;
}
$docOptions = $data->getOptions(array('version', 'version_type', 'routing', 'percolate', 'parent', 'fields', 'retry_on_conflict', 'consistency', 'replication', 'refresh', 'timeout'));
$options += $docOptions;
// set fields param to source only if options was not set before
if ($data instanceof Document && ($data->isAutoPopulate() || $this->getConfigValue(array('document', 'autoPopulate'), false)) && !isset($options['fields'])) {
$options['fields'] = '_source';
}
} else {
$requestData = $data;
}
//If an upsert document exists
if ($data instanceof Script || $data instanceof Document) {
if ($data->hasUpsert()) {
$requestData['upsert'] = $data->getUpsert()->getData();
}
}
if (!isset($options['retry_on_conflict'])) {
$retryOnConflict = $this->getConfig("retryOnConflict");
$options['retry_on_conflict'] = $retryOnConflict;
}
$response = $this->request($path, Request::POST, $requestData, $options);
if ($response->isOk() && $data instanceof Document && ($data->isAutoPopulate() || $this->getConfigValue(array('document', 'autoPopulate'), false))) {
$responseData = $response->getData();
if (isset($responseData['_version'])) {
$data->setVersion($responseData['_version']);
}
if (isset($options['fields'])) {
$this->_populateDocumentFieldsFromResponse($response, $data, $options['fields']);
}
}
return $response;
}
示例5: testDataPropertiesOverloading
/**
* @group unit
*/
public function testDataPropertiesOverloading()
{
$document = new Document(1, array('field1' => 'value1', 'field2' => 'value2', 'field3' => 'value3', 'field4' => null));
$this->assertEquals('value1', $document->field1);
$this->assertEquals('value2', $document->field2);
$this->assertEquals('value3', $document->field3);
$this->assertNull($document->field4);
try {
$document->field5;
$this->fail('Undefined field get should throw exception');
} catch (InvalidException $e) {
$this->assertTrue(true);
}
$this->assertTrue(isset($document->field1));
$this->assertTrue(isset($document->field2));
$this->assertTrue(isset($document->field3));
$this->assertFalse(isset($document->field4), 'Field4 should not be isset, because it is null');
$this->assertFalse(isset($document->field5), 'Field5 should not be isset, because it is not set');
$data = $document->getData();
$this->assertArrayHasKey('field1', $data);
$this->assertEquals('value1', $data['field1']);
$this->assertArrayHasKey('field2', $data);
$this->assertEquals('value2', $data['field2']);
$this->assertArrayHasKey('field3', $data);
$this->assertEquals('value3', $data['field3']);
$this->assertArrayHasKey('field4', $data);
$this->assertNull($data['field4']);
$document->field1 = 'changed1';
unset($document->field3);
try {
unset($document->field5);
$this->fail('Undefined field unset should throw exception');
} catch (InvalidException $e) {
$this->assertTrue(true);
}
$this->assertEquals('changed1', $document->field1);
$this->assertFalse(isset($document->field3));
$newData = $document->getData();
$this->assertNotEquals($data, $newData);
}