diff --git a/src/main/java/org/codelibs/fess/es/client/FessEsClient.java b/src/main/java/org/codelibs/fess/es/client/FessEsClient.java index 508fc15be..6404cf82c 100644 --- a/src/main/java/org/codelibs/fess/es/client/FessEsClient.java +++ b/src/main/java/org/codelibs/fess/es/client/FessEsClient.java @@ -36,6 +36,7 @@ import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import org.codelibs.core.beans.util.BeanUtil; +import org.codelibs.core.exception.ResourceNotFoundRuntimeException; import org.codelibs.core.io.FileUtil; import org.codelibs.core.io.ResourceUtil; import org.codelibs.core.lang.StringUtil; @@ -66,6 +67,7 @@ import org.elasticsearch.action.ActionRequest; import org.elasticsearch.action.ActionRequestBuilder; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse; +import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse; import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse; import org.elasticsearch.action.admin.indices.flush.FlushResponse; @@ -345,10 +347,9 @@ public class FessEsClient implements Client { logger.warn("Failed to flush config files.", e); } - String source = null; final String indexConfigFile = indexConfigPath + "/" + configIndex + ".json"; try { - source = FileUtil.readUTF8(indexConfigFile); + String source = FileUtil.readUTF8(indexConfigFile); final String dictionaryPath = System.getProperty("fess.dictionary.path", StringUtil.EMPTY); source = source.replaceAll(Pattern.quote("${fess.dictionary.path}"), dictionaryPath); final CreateIndexResponse indexResponse = @@ -364,6 +365,31 @@ public class FessEsClient implements Client { } catch (final Exception e) { logger.warn(indexConfigFile + " is not found.", e); } + + // alias + final String aliasConfigDirPath = indexConfigPath + "/" + configIndex + "/alias"; + try { + File aliasConfigDir = ResourceUtil.getResourceAsFile(aliasConfigDirPath); + if (aliasConfigDir.isDirectory()) { + StreamUtil.of(aliasConfigDir.listFiles((dir, name) -> name.endsWith(".json"))).forEach( + f -> { + final String aliasName = f.getName().replaceFirst(".json$", ""); + final String source = FileUtil.readUTF8(f); + IndicesAliasesResponse response = + client.admin().indices().prepareAliases().addAlias(configIndex, aliasName, source).execute() + .actionGet(fessConfig.getIndexIndicesTimeout()); + if (response.isAcknowledged()) { + logger.info("Created " + aliasName + " alias for " + configIndex); + } else if (logger.isDebugEnabled()) { + logger.debug("Failed to create " + aliasName + " alias for " + configIndex); + } + }); + } + } catch (ResourceNotFoundRuntimeException e) { + // ignore + } catch (Exception e) { + logger.warn(aliasConfigDirPath + " is not found.", e); + } } final GetMappingsResponse getMappingsResponse = diff --git a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java index 8dd9387a5..4adb73c2a 100644 --- a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java +++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java @@ -442,7 +442,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction /** The key of the configuration. e.g. 1,2 */ String SMB_AVAILABLE_SID_TYPES = "smb.available.sid.types"; - /** The key of the configuration. e.g. .fess_config,.fess_user */ + /** The key of the configuration. e.g. .fess_basic_config,.fess_config,.fess_user */ String INDEX_BACKUP_TARGETS = "index.backup.targets"; /** The key of the configuration. e.g. admin */ @@ -2106,7 +2106,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction /** * Get the value for the key 'index.backup.targets'.
- * The value is, e.g. .fess_config,.fess_user
+ * The value is, e.g. .fess_basic_config,.fess_config,.fess_user
* comment: backup * @return The value of found property. (NotNull: if not found, exception but basically no way) */ diff --git a/src/main/resources/fess_config.properties b/src/main/resources/fess_config.properties index d2c42ac23..1337a23ee 100644 --- a/src/main/resources/fess_config.properties +++ b/src/main/resources/fess_config.properties @@ -243,7 +243,7 @@ smb.role.from.file=true smb.available.sid.types=1,2 # backup -index.backup.targets=.fess_config,.fess_user +index.backup.targets=.fess_basic_config,.fess_config,.fess_user # ======================================================================================== # Web diff --git a/src/main/resources/fess_indices/.fess_config/alias/.fess_basic_config.json b/src/main/resources/fess_indices/.fess_config/alias/.fess_basic_config.json new file mode 100644 index 000000000..f76be5e8e --- /dev/null +++ b/src/main/resources/fess_indices/.fess_config/alias/.fess_basic_config.json @@ -0,0 +1,11 @@ +{ + "bool": { + "must_not": [ + { + "type": { + "value": "failure_url" + } + } + ] + } +}