/** * Update the search index to point to the write index. */ protected void syncSearchAndWriteAlias(ElasticSearchIndexConfig conf) { if (!conf.manageAlias()) { return; } String searchAlias = conf.getName(); String searchIndex = getClient().getFirstIndexForAlias(searchAlias); String writeAlias = conf.writeIndexOrAlias(); String writeIndex = getClient().getFirstIndexForAlias(writeAlias); if (!writeIndex.equals(searchIndex)) { log.warn(String.format("Updating search alias %s->%s (previously %s)", searchAlias, writeIndex, searchIndex)); getClient().updateAlias(searchAlias, writeIndex); searchIndex = writeIndex; } if (searchIndex != null) { repoNames.put(searchIndex, conf.getRepositoryName()); } }
protected void initSearchAlias(ElasticSearchIndexConfig conf) { // init the search alias String searchAlias = conf.getName(); String searchIndex = getClient().getFirstIndexForAlias(searchAlias); String writeAlias = conf.writeIndexOrAlias(); String writeIndex = getClient().getFirstIndexForAlias(writeAlias); if (searchIndex == null) { if (getClient().indexExists(searchAlias)) { if (Framework.isTestModeSet()) { // in test mode we drop an index that have the target alias name getClient().deleteIndex(searchAlias, TIMEOUT_DELETE_SECOND); } searchIndex = searchAlias; } else { // search alias is not created, point to the write index getClient().updateAlias(searchAlias, writeIndex); searchIndex = writeIndex; } } log.info(String.format("Managed index aliases: Alias: %s -> index: %s, alias: %s -> index: %s", searchAlias, searchIndex, writeAlias, writeIndex)); }
protected void initWriteAlias(ElasticSearchIndexConfig conf, boolean dropIfExists) { // init the write index and alias String writeAlias = conf.writeIndexOrAlias(); String writeIndex = getClient().getFirstIndexForAlias(writeAlias); String nextWriteIndex = conf.newWriteIndexForAlias(conf.getName(), writeIndex); if (writeIndex != null && !dropIfExists) { // alias exists make sure the index is well configured initIndex(writeIndex, conf, false); } else { // create a new write index and update the alias, we don't drop anything if (getClient().indexExists(nextWriteIndex)) { throw new IllegalStateException( String.format("New index name %s for the alias %s already exists", nextWriteIndex, writeAlias)); } initIndex(nextWriteIndex, conf, false); getClient().updateAlias(writeAlias, nextWriteIndex); } }
if (conf.isDocumentIndex()) { String realIndexForAlias = getClient().getFirstIndexForAlias(conf.getName()); if (realIndexForAlias != null) { repoNames.put(realIndexForAlias, conf.getRepositoryName());