@Override public void start() { // create the "metadata" index first if (!client.prepareIndicesExist(MetadataIndexDefinition.INDEX_TYPE_METADATA.getIndex()).get().isExists()) { IndexDefinition.IndexDefinitionContext context = new IndexDefinition.IndexDefinitionContext(); metadataIndexDefinition.define(context); NewIndex index = context.getIndices().values().iterator().next(); createIndex(new Index(index), false); } checkDbCompatibility(definitions.getIndices().values()); // create indices that do not exist or that have a new definition (different mapping, cluster enabled, ...) for (Index index : definitions.getIndices().values()) { boolean exists = client.prepareIndicesExist(index.getName()).get().isExists(); if (exists && !index.getName().equals(MetadataIndexDefinition.INDEX_TYPE_METADATA.getIndex()) && hasDefinitionChange(index)) { verifyNotBlueGreenDeployment(index.getName()); LOGGER.info("Delete Elasticsearch index {} (structure changed)", index.getName()); deleteIndex(index.getName()); exists = false; } if (!exists) { createIndex(index, true); } } }
private IndexCreator startNewCreator(IndexDefinition... definitions) { IndexDefinitions defs = new IndexDefinitions(definitions, new MapSettings().asConfig()); defs.start(); IndexCreator creator = new IndexCreator(es.client(), defs, metadataIndexDefinition, metadataIndex, esDbCompatibility, settings.asConfig()); creator.start(); return creator; }
@Override public void start() { // create the "metadata" index first if (!client.prepareIndicesExist(MetadataIndexDefinition.INDEX_TYPE_METADATA.getIndex()).get().isExists()) { IndexDefinition.IndexDefinitionContext context = new IndexDefinition.IndexDefinitionContext(); metadataIndexDefinition.define(context); NewIndex index = context.getIndices().values().iterator().next(); createIndex(new Index(index), false); } checkDbCompatibility(definitions.getIndices().values()); // create indices that do not exist or that have a new definition (different mapping, cluster enabled, ...) for (Index index : definitions.getIndices().values()) { boolean exists = client.prepareIndicesExist(index.getName()).get().isExists(); if (exists && !index.getName().equals(MetadataIndexDefinition.INDEX_TYPE_METADATA.getIndex()) && hasDefinitionChange(index)) { verifyNotBlueGreenDeployment(index.getName()); LOGGER.info("Delete Elasticsearch index {} (structure changed)", index.getName()); deleteIndex(index.getName()); exists = false; } if (!exists) { createIndex(index, true); } } }