fix #675 delete .crawler on upgrade
This commit is contained in:
parent
191836ed93
commit
2573cc251f
3 changed files with 80 additions and 25 deletions
|
@ -23,6 +23,7 @@ import java.util.ArrayList;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -79,6 +80,8 @@ public class AdminUpgradeAction extends FessAdminAction {
|
|||
//
|
||||
private static final Logger logger = LoggerFactory.getLogger(AdminUpgradeAction.class);
|
||||
|
||||
private static final String VERSION_10_2 = "10.2";
|
||||
|
||||
private static final String VERSION_10_1 = "10.1";
|
||||
|
||||
private static final String VERSION_10_0 = "10.0";
|
||||
|
@ -158,9 +161,23 @@ public class AdminUpgradeAction extends FessAdminAction {
|
|||
});
|
||||
verifyToken(() -> asIndexHtml());
|
||||
|
||||
if (VERSION_10_1.equals(form.targetVersion)) {
|
||||
if (VERSION_10_2.equals(form.targetVersion)) {
|
||||
try {
|
||||
upgradeFrom10_2();
|
||||
upgradeFromAll();
|
||||
|
||||
saveInfo(messages -> messages.addSuccessUpgradeFrom(GLOBAL));
|
||||
|
||||
fessEsClient.refresh();
|
||||
} catch (final Exception e) {
|
||||
logger.warn("Failed to upgrade data.", e);
|
||||
saveError(messages -> messages.addErrorsFailedToUpgradeFrom(GLOBAL, VERSION_10_1, e.getLocalizedMessage()));
|
||||
}
|
||||
} else if (VERSION_10_1.equals(form.targetVersion)) {
|
||||
try {
|
||||
upgradeFrom10_1();
|
||||
upgradeFrom10_2();
|
||||
upgradeFromAll();
|
||||
|
||||
saveInfo(messages -> messages.addSuccessUpgradeFrom(GLOBAL));
|
||||
|
||||
|
@ -173,6 +190,8 @@ public class AdminUpgradeAction extends FessAdminAction {
|
|||
try {
|
||||
upgradeFrom10_0();
|
||||
upgradeFrom10_1();
|
||||
upgradeFrom10_2();
|
||||
upgradeFromAll();
|
||||
|
||||
saveInfo(messages -> messages.addSuccessUpgradeFrom(GLOBAL));
|
||||
|
||||
|
@ -187,6 +206,20 @@ public class AdminUpgradeAction extends FessAdminAction {
|
|||
return redirect(getClass());
|
||||
}
|
||||
|
||||
private void upgradeFromAll() {
|
||||
final IndicesAdminClient indicesClient = fessEsClient.admin().indices();
|
||||
final String crawlerIndex = fessConfig.getIndexDocumentCrawlerIndex();
|
||||
|
||||
// .crawler
|
||||
if (existsIndex(indicesClient, crawlerIndex, IndicesOptions.fromOptions(false, true, true, true))) {
|
||||
deleteIndex(indicesClient, crawlerIndex, response -> {});
|
||||
}
|
||||
}
|
||||
|
||||
private void upgradeFrom10_2() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
private void upgradeFrom10_1() {
|
||||
final IndicesAdminClient indicesClient = fessEsClient.admin().indices();
|
||||
final String indexConfigPath = "fess_indices";
|
||||
|
@ -196,6 +229,7 @@ public class AdminUpgradeAction extends FessAdminAction {
|
|||
final String searchIndex = fessConfig.getIndexDocumentSearchIndex();
|
||||
final String oldDocIndex = "fess";
|
||||
final String suggestAnalyzerIndex = ".suggest.analyzer";
|
||||
final String suggestIndex = fessConfig.getIndexDocumentSuggestIndex();
|
||||
|
||||
// file
|
||||
uploadResource(indexConfigPath, oldDocIndex, "ja/mapping.txt");
|
||||
|
@ -701,31 +735,21 @@ public class AdminUpgradeAction extends FessAdminAction {
|
|||
}
|
||||
|
||||
// fess.suggest
|
||||
final String suggestIndex = fessConfig.getIndexDocumentSuggestIndex();
|
||||
if (existsIndex(indicesClient, suggestIndex, IndicesOptions.fromOptions(false, true, true, true))) {
|
||||
indicesClient.prepareDelete(suggestIndex).execute(new ActionListener<DeleteIndexResponse>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(DeleteIndexResponse response) {
|
||||
scheduledJobService.getScheduledJob("suggest_indexer").ifPresent(entity -> {
|
||||
if (!entity.isEnabled() || entity.isRunning()) {
|
||||
logger.warn("suggest_indexer job is running.");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
entity.start();
|
||||
} catch (final Exception e) {
|
||||
logger.warn("Failed to start suggest_indexer job.", e);
|
||||
}
|
||||
}).orElse(() -> {
|
||||
logger.warn("No suggest_indexer job.");
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable e) {
|
||||
logger.warn("Failed to delete " + suggestIndex + " index.", e);
|
||||
}
|
||||
deleteIndex(indicesClient, suggestIndex, response -> {
|
||||
scheduledJobService.getScheduledJob("suggest_indexer").ifPresent(entity -> {
|
||||
if (!entity.isEnabled() || entity.isRunning()) {
|
||||
logger.warn("suggest_indexer job is running.");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
entity.start();
|
||||
} catch (final Exception e) {
|
||||
logger.warn("Failed to start suggest_indexer job.", e);
|
||||
}
|
||||
}).orElse(() -> {
|
||||
logger.warn("No suggest_indexer job.");
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1049,4 +1073,20 @@ public class AdminUpgradeAction extends FessAdminAction {
|
|||
return false;
|
||||
}
|
||||
|
||||
private void deleteIndex(final IndicesAdminClient indicesClient, final String index, final Consumer<DeleteIndexResponse> comsumer) {
|
||||
indicesClient.prepareDelete(index).execute(new ActionListener<DeleteIndexResponse>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(DeleteIndexResponse response) {
|
||||
logger.info("Deleted " + index + " index.");
|
||||
comsumer.accept(response);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable e) {
|
||||
logger.warn("Failed to delete " + index + " index.", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
|
@ -363,6 +363,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
|
|||
/** The key of the configuration. e.g. fess */
|
||||
String INDEX_DOCUMENT_SUGGEST_INDEX = "index.document.suggest.index";
|
||||
|
||||
/** The key of the configuration. e.g. .crawler */
|
||||
String INDEX_DOCUMENT_CRAWLER_INDEX = "index.document.crawler.index";
|
||||
|
||||
/** The key of the configuration. e.g. lang,role,label,anchor */
|
||||
String INDEX_ADMIN_ARRAY_FIELDS = "index.admin.array.fields";
|
||||
|
||||
|
@ -2046,6 +2049,13 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
|
|||
*/
|
||||
String getIndexDocumentSuggestIndex();
|
||||
|
||||
/**
|
||||
* Get the value for the key 'index.document.crawler.index'. <br>
|
||||
* The value is, e.g. .crawler <br>
|
||||
* @return The value of found property. (NotNull: if not found, exception but basically no way)
|
||||
*/
|
||||
String getIndexDocumentCrawlerIndex();
|
||||
|
||||
/**
|
||||
* Get the value for the key 'index.admin.array.fields'. <br>
|
||||
* The value is, e.g. lang,role,label,anchor <br>
|
||||
|
@ -4690,6 +4700,10 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
|
|||
return get(FessConfig.INDEX_DOCUMENT_SUGGEST_INDEX);
|
||||
}
|
||||
|
||||
public String getIndexDocumentCrawlerIndex() {
|
||||
return get(FessConfig.INDEX_DOCUMENT_CRAWLER_INDEX);
|
||||
}
|
||||
|
||||
public String getIndexAdminArrayFields() {
|
||||
return get(FessConfig.INDEX_ADMIN_ARRAY_FIELDS);
|
||||
}
|
||||
|
|
|
@ -173,6 +173,7 @@ index.document.search.index=fess.search
|
|||
index.document.update.index=fess.update
|
||||
index.document.type=doc
|
||||
index.document.suggest.index=fess
|
||||
index.document.crawler.index=.crawler
|
||||
|
||||
# doc management
|
||||
index.admin.array.fields=lang,role,label,anchor
|
||||
|
|
Loading…
Add table
Reference in a new issue