Update document, using update script. Requires elasticsearch >= 0.19.0.
public updateDocument ( |
||
$data | Document with update data | |
$options | array | array of query params to use for query. For possible options check es api |
return |
/** * @test */ public function doUpdateExistingDocumentOnSave() { $id = 1; $data = 'foobar'; $doc = $this->prophesizeFindDocument($id, $data); $this->index->refresh()->shouldBeCalled(); $this->type->updateDocument($doc)->shouldBeCalled(); self::assertTrue($this->cache->save($id, $data)); self::assertEquals(serialize($data), $doc->get(Cache::VALUE_FIELD)); }
/** * @param array $removeCities */ public function removeCities($removeCities) { foreach ($removeCities as $departmentId => $newCities) { $document = $this->departmentType->getDocument($departmentId); $data = $document->getData(); if (isset($data['citiesIds'])) { $cities = $data['citiesIds']; foreach ($newCities as $newCity) { unset($cities[$newCity]); } $data['citiesIds'] = $cities; $document->setData($data); $this->departmentType->updateDocument($document); } } }
/** * Construit les données afin que celles-ci soient indexées (avec les fields corrects) * Méthode non testée et non utilisée pour le moment (Préférable de la tester avant..) * * @param CMbObject $datum the datum you want to construct * @param Elastica\Type $type the type where you want to index the data * * @return array */ function indexingDatum($datum, $type) { $datum_to_index = $this->constructDatum($datum); $document = $type->createDocument($datum['object_id'], $datum_to_index); switch ($datum['type']) { case 'create': $type->addDocument($document); break; case 'store': $type->updateDocument($document); break; case 'delete': $type->deleteDocument($document); break; case 'merge': //nothing to do /*supprimer un des deux et faire un update de l'autre.*/ break; default: return false; } $type->getIndex()->refresh(); $this->deleteDatumTemporaryTable($datum['search_indexing_id']); return true; }