package io.searchbox.indices.aliases;
import io.searchbox.client.JestResult;
import io.searchbox.common.AbstractIntegrationTest;
import org.elasticsearch.action.admin.cluster.state.ClusterStateRequest;
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.metadata.AliasMetaData;
import org.elasticsearch.test.ESIntegTestCase;
import org.junit.Test;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @author cihat keser
*/
@ESIntegTestCase.ClusterScope(scope = ESIntegTestCase.Scope.SUITE, numDataNodes = 1)
public class ModifyAliasesIntegrationTest extends AbstractIntegrationTest {
@Test
public void testAddAlias() throws IOException {
String index0 = "my_index_0";
String index1 = "my_index_1";
createIndex((index0), index1);
String alias = "myAlias000";
ModifyAliases modifyAliases = new ModifyAliases.Builder(
new AddAliasMapping.Builder((index0), alias).build()
).build();
JestResult result = client.execute(modifyAliases);
assertTrue(result.getErrorMessage(), result.isSucceeded());
ClusterState clusterState =
client().admin().cluster().state(new ClusterStateRequest()).actionGet(10, TimeUnit.SECONDS).getState();
assertNotNull(clusterState);
assertTrue(clusterState.getMetaData().hasAliases(new String[]{alias}, new String[]{index0}));
assertFalse(clusterState.getMetaData().hasAliases(new String[]{alias}, new String[]{index1}));
}
@Test
public void testAddAliasForMultipleIndex() throws IOException {
String index2 = "my_index_2";
String index3 = "my_index_3";
createIndex(index2, index3);
String alias = "myAlias001";
ModifyAliases modifyAliases = new ModifyAliases.Builder(
new AddAliasMapping.Builder(index2, alias).addIndex(index3).build()
).build();
JestResult result = client.execute(modifyAliases);
assertTrue(result.getErrorMessage(), result.isSucceeded());
ClusterState clusterState =
client().admin().cluster().state(new ClusterStateRequest()).actionGet(10, TimeUnit.SECONDS).getState();
assertNotNull(clusterState);
assertTrue(clusterState.getMetaData().hasAliases(new String[]{alias}, new String[]{index2, index3}));
}
@Test
public void testAddAliasWithRouting() throws IOException {
createIndex("my_index_4", "my_index_5");
String alias = "myAlias002";
String routing = "3";
ModifyAliases modifyAliases = new ModifyAliases.Builder(
new AddAliasMapping.Builder("my_index_4", alias).addSearchRouting(routing).build()
).build();
JestResult result = client.execute(modifyAliases);
assertTrue(result.getErrorMessage(), result.isSucceeded());
ClusterState clusterState =
client().admin().cluster().state(new ClusterStateRequest()).actionGet(10, TimeUnit.SECONDS).getState();
assertNotNull(clusterState);
assertTrue(clusterState.getMetaData().hasAliases(new String[]{alias}, new String[]{"my_index_4"}));
assertFalse(clusterState.getMetaData().hasAliases(new String[]{alias}, new String[]{"my_index_5"}));
clusterState.getMetaData().findAliases(new String[]{alias}, new String[]{"my_index_4"}).get("my_index_4");
List<AliasMetaData> indexMetadata = clusterState.getMetaData().findAliases(new String[]{alias}, new String[]{"my_index_4"}).get("my_index_4");
assertEquals(1, indexMetadata.size());
assertEquals(routing, indexMetadata.get(0).getSearchRouting());
}
@Test
public void testRemoveAlias() throws IOException {
createIndex("my_index_6", "my_index_7");
String alias = "myAlias003";
IndicesAliasesRequest indicesAliasesRequest = new IndicesAliasesRequest();
IndicesAliasesRequest.AliasActions action = IndicesAliasesRequest.AliasActions.add().alias(alias).index("my_index_6");
indicesAliasesRequest.addAliasAction(action);
IndicesAliasesResponse indicesAliasesResponse =
client().admin().indices().aliases(indicesAliasesRequest).actionGet(10, TimeUnit.SECONDS);
assertNotNull(indicesAliasesResponse);
assertTrue(indicesAliasesResponse.isAcknowledged());
ModifyAliases modifyAliases = new ModifyAliases.Builder(
new RemoveAliasMapping.Builder("my_index_6", alias).build()
).build();
JestResult result = client.execute(modifyAliases);
assertTrue(result.getErrorMessage(), result.isSucceeded());
ClusterState clusterState =
client().admin().cluster().state(new ClusterStateRequest()).actionGet(10, TimeUnit.SECONDS).getState();
assertNotNull(clusterState);
assertFalse(clusterState.getMetaData().hasAlias(alias));
}
@Test
public void testAddAndRemoveAlias() throws IOException {
createIndex("my_index_8", "my_index_9");
String alias = "myAlias004";
IndicesAliasesRequest indicesAliasesRequest = new IndicesAliasesRequest();
IndicesAliasesRequest.AliasActions action = IndicesAliasesRequest.AliasActions.add().index("my_index_8").alias(alias);
indicesAliasesRequest.addAliasAction(action);
IndicesAliasesResponse indicesAliasesResponse =
client().admin().indices().aliases(indicesAliasesRequest).actionGet(10, TimeUnit.SECONDS);
assertNotNull(indicesAliasesResponse);
assertTrue(indicesAliasesResponse.isAcknowledged());
ModifyAliases modifyAliases = new ModifyAliases.Builder(
new RemoveAliasMapping.Builder("my_index_8", alias).build()
).addAlias(
new AddAliasMapping.Builder("my_index_9", alias).build()
).build();
JestResult result = client.execute(modifyAliases);
assertTrue(result.getErrorMessage(), result.isSucceeded());
ClusterState clusterState =
client().admin().cluster().state(new ClusterStateRequest()).actionGet(10, TimeUnit.SECONDS).getState();
assertNotNull(clusterState);
assertTrue(clusterState.getMetaData().hasAliases(new String[]{alias}, new String[]{"my_index_9"}));
assertFalse(clusterState.getMetaData().hasAliases(new String[]{alias}, new String[]{"my_index_8"}));
}
}