Просмотр исходного кода

#2841 Fix fess_basic_config alias handling for Fess multi-instance support.

Shinsuke Sugaya 10 месяцев назад
Родитель
Сommit
e7657528ef

+ 10 - 2
src/main/java/org/codelibs/fess/app/web/admin/backup/AdminBackupAction.java

@@ -346,7 +346,7 @@ public class AdminBackupAction extends FessAdminAction {
                     }
                 });
             } else {
-                final String index;
+                String index;
                 final String filename;
                 if (id.endsWith(".bulk")) {
                     index = id.substring(0, id.length() - 5);
@@ -355,9 +355,17 @@ public class AdminBackupAction extends FessAdminAction {
                     index = id;
                     filename = id + ".bulk";
                 }
+                if ("fess_config".equals(index)) {
+                    index = fessConfig.getIndexConfigIndex();
+                } else if ("fess_user".equals(index)) {
+                    index = fessConfig.getIndexUserIndex();
+                } else if ("fess_basic_config".equals(index) && !"fess_config".equals(fessConfig.getIndexConfigIndex())) {
+                    index = "basic_" + fessConfig.getIndexConfigIndex();
+                }
+                final String alias = index;
                 return asStream(filename).contentTypeOctetStream().stream(out -> {
                     try (final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out.stream(), Constants.CHARSET_UTF_8))) {
-                        SearchEngineUtil.scroll(index, hit -> {
+                        SearchEngineUtil.scroll(alias, hit -> {
                             try {
                                 writer.write("{\"index\":{\"_index\":\"" + hit.getIndex() + "\",\"_id\":\""
                                         + StringEscapeUtils.escapeJson(hit.getId()) + "\"}}\n");

+ 5 - 1
src/main/java/org/codelibs/fess/es/client/SearchEngineClient.java

@@ -647,7 +647,11 @@ public class SearchEngineClient implements Client {
                         }
                     } else if (index.startsWith(CONFIG_INDEX_PREFIX)) {
                         final String name = fessConfig.getIndexConfigIndex();
-                        aliasName = aliasName.replaceFirst(Pattern.quote(CONFIG_INDEX_PREFIX), name);
+                        if ("fess_basic_config".equals(aliasName) && !CONFIG_INDEX_PREFIX.equals(name)) {
+                            aliasName = aliasName.replaceFirst("fess_basic_config", "basic_" + name);
+                        } else {
+                            aliasName = aliasName.replaceFirst(Pattern.quote(CONFIG_INDEX_PREFIX), name);
+                        }
                     } else if (index.startsWith(USER_INDEX_PREFIX)) {
                         final String name = fessConfig.getIndexUserIndex();
                         aliasName = aliasName.replaceFirst(Pattern.quote(USER_INDEX_PREFIX), name);