/**
  * More like this query based on the given object
  *
  * The id in the given object has to be set
  *
  * @param  \Elastica\Document           $doc    Document to query for similar objects
  * @param  array                       $params OPTIONAL Additional arguments for the query
  * @param  string|array|\Elastica\Query $query  OPTIONAL Query to filter the moreLikeThis results
  * @return \Elastica\ResultSet          ResultSet with all results inside
  * @link http://www.elasticsearch.org/guide/reference/api/more-like-this.html
  */
 public function moreLikeThis(Document $doc, $params = array(), $query = array())
 {
     $path = $doc->getId() . '/_mlt';
     $query = Query::create($query);
     $response = $this->request($path, Request::GET, $query->toArray(), $params);
     return new ResultSet($response, $query);
 }
Beispiel #2
0
 /**
  * @param \Elastica\Document $document
  *
  * @return \Elastica\Response
  */
 public function deleteDocument(Document $document)
 {
     $options = $document->getOptions(array('version', 'version_type', 'routing', 'parent', 'replication', 'consistency', 'refresh', 'timeout'));
     return $this->deleteById($document->getId(), $options);
 }
Beispiel #3
0
 /**
  * Update document, using update script. Requires elasticsearch >= 0.19.0
  *
  * @link http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html
  * @throws \Elastica\Exception\InvalidException
  *
  * @param  \Elastica\Document|\Elastica\Script $data    Document with update data
  * @param  array                               $options array of query params to use for query. For possible options check es api
  * @return \Elastica\Response
  */
 public function updateDocument($data, array $options = array())
 {
     if (!$data instanceof Document && !$data instanceof Script) {
         throw new \InvalidArgumentException("Data should be a Document or Script");
     }
     if (!$data->hasId()) {
         throw new InvalidException('Document or Script id is not set');
     }
     $id = urlencode($data->getId());
     return $this->getIndex()->getClient()->updateDocument($id, $data, $this->getIndex()->getName(), $this->getName(), $options);
 }
Beispiel #4
0
 /**
  * @group functional
  */
 public function testAddDocumentAutoGeneratedId()
 {
     $index = $this->_createIndex();
     $type = $index->getType('elastica_type');
     $document = new Document();
     $document->setAutoPopulate();
     $document->set('name', 'ruflin');
     $this->assertEquals('', $document->getId());
     $this->assertFalse($document->hasId());
     $type->addDocument($document);
     $this->assertNotEquals('', $document->getId());
     $this->assertTrue($document->hasId());
     $foundDoc = $type->getDocument($document->getId());
     $this->assertInstanceOf('Elastica\\Document', $foundDoc);
     $this->assertEquals($document->getId(), $foundDoc->getId());
     $data = $foundDoc->getData();
     $this->assertArrayHasKey('name', $data);
     $this->assertEquals('ruflin', $data['name']);
 }