/** * Create new mappings or update existing mappings */ public function updateMappings() { /** @var ClassMetadata[] $metadatas */ $metadatas = $this->sm->getMetadataFactory()->getAllMetadata(); // Refresh all the mappings foreach ($metadatas as $metadata) { // if we're in the dev env, set the number of replicas to be 0 if ($this->env == 'dev' || $this->env == 'test_local') { $metadata->numberOfReplicas = 0; } // create the index if it doesn't exist yet $indexName = $metadata->timeSeriesScale ? $metadata->getCurrentTimeSeriesIndex() : $metadata->index; /** @var Index $index */ $index = $this->client->getIndex($indexName); if (!$index->exists()) { $this->client->createIndex($indexName, $metadata->getSettings()); } // create the type if it doesn't exist yet if ($metadata->type) { $type = new Type($index, $metadata->type); if (!$type->exists()) { $this->client->createType($metadata); } // update the mapping $result = $this->client->updateMapping($metadata); if (true !== $result) { echo "Warning: Failed to update mapping for index '{$indexName}', type '{$metadata->type}'. Reason: {$result}\n"; } } } }