All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.search.elasticsearch.cfg.IndexSchemaManagementStrategy Maven / Gradle / Ivy

The newest version!
/*
 * Hibernate Search, full-text search for your domain model
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later
 * See the lgpl.txt file in the root directory or .
 */
package org.hibernate.search.elasticsearch.cfg;

import java.util.Collections;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

/**
 * Strategy for creating/deleting the indexes in Elasticsearch upon session factory initialization and shut-down.
 *
 * @author Gunnar Morling
 */
public enum IndexSchemaManagementStrategy {

	/**
	 * Indexes will never be created or deleted.
	 * 

Hibernate Search will not even check that the index actually exists. *

The index schema (mapping and analyzer definitions) is not managed by Hibernate Search and is not checked. */ NONE("none"), /** * Upon session factory initialization, existing index mappings will be checked * by Hibernate Search, causing an exception if a required mapping does not exist * or exists but differs in a non-compatible way (more strict type constraints, for instance), * or if an analyzer definition is missing or differs in any way. *

This strategy will not bring any change to the mappings or analyzer definitions, nor create or delete any index. */ VALIDATE("validate"), /** * Upon session factory initialization, index mappings and analyzer definitions will be updated to match expected ones, * causing an exception if a mapping to be updated is not compatible with the expected one. *

Missing indexes will be created along with their mappings and analyzer definitions. * Missing mappings and analyzer definitions on existing indexes will be created. */ UPDATE("update"), /** * Existing indexes will not be altered, missing indexes will be created along with their mappings and analyzer definitions. */ CREATE("create"), /** * Indexes - and all their contents - will be deleted and newly created (along with their mappings and analyzer definitions) * upon session factory initialization. * *

Note that whenever a search factory is altered after initialization (i.e. new entities are mapped), * the index will not be deleted again: new mappings will simply be added to the index. */ DROP_AND_CREATE("drop-and-create"), /** * The same as {@link #DROP_AND_CREATE}, but indexes - and all their contents - will be deleted upon session factory * shut-down as well. */ DROP_AND_CREATE_AND_DROP("drop-and-create-and-drop"); private static final Map VALUES_BY_EXTERNAL_NAME; static { Map tmpMap = new HashMap<>(); for ( IndexSchemaManagementStrategy strategy : values() ) { tmpMap.put( strategy.externalName.toLowerCase( Locale.ROOT ), strategy ); } VALUES_BY_EXTERNAL_NAME = Collections.unmodifiableMap( tmpMap ); } public static IndexSchemaManagementStrategy interpretPropertyValue(String propertyValue) { final String normalizedName = propertyValue.trim().toLowerCase( Locale.ROOT ); IndexSchemaManagementStrategy strategy = VALUES_BY_EXTERNAL_NAME.get( normalizedName ); if ( strategy == null ) { throw new IllegalArgumentException( "Unrecognized property value for an index schema management strategy: '" + propertyValue + "'. Please use one of " + VALUES_BY_EXTERNAL_NAME.keySet() ); } return strategy; } private final String externalName; private IndexSchemaManagementStrategy(String propertyValue) { this.externalName = propertyValue; } /** * @return the name to use in configuration files. */ public String getExternalName() { return externalName; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy