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"
+ }
+ }
+ ]
+ }
+}