2626import org .elasticsearch .common .Priority ;
2727import org .elasticsearch .test .ESIntegTestCase ;
2828
29+ import java .util .Collections ;
2930import java .util .HashMap ;
3031import java .util .Map ;
3132import java .util .Set ;
3233import java .util .concurrent .ExecutionException ;
3334
3435import static org .elasticsearch .common .util .set .Sets .newHashSet ;
35- import static org .elasticsearch .index .query .QueryBuilders .matchQuery ;
3636import static org .elasticsearch .index .query .QueryBuilders .queryStringQuery ;
3737import static org .elasticsearch .test .hamcrest .ElasticsearchAssertions .assertHitCount ;
3838import static org .hamcrest .Matchers .equalTo ;
3939import static org .hamcrest .Matchers .nullValue ;
4040
4141public class AliasResolveRoutingIT extends ESIntegTestCase {
4242
43-
4443 // see https://github.com/elastic/elasticsearch/issues/13278
4544 public void testSearchClosedWildcardIndex () throws ExecutionException , InterruptedException {
4645 createIndex ("test-0" );
@@ -52,10 +51,17 @@ public void testSearchClosedWildcardIndex() throws ExecutionException, Interrupt
5251 client ().prepareIndex ("test-0" , "type1" , "2" ).setSource ("field1" , "quick brown" ),
5352 client ().prepareIndex ("test-0" , "type1" , "3" ).setSource ("field1" , "quick" ));
5453 refresh ("test-*" );
55- assertHitCount (client ().prepareSearch ().setIndices ("alias-*" ).setIndicesOptions (IndicesOptions .lenientExpandOpen ()).setQuery (queryStringQuery ("quick" )).get (), 3L );
54+ assertHitCount (
55+ client ()
56+ .prepareSearch ()
57+ .setIndices ("alias-*" )
58+ .setIndicesOptions (IndicesOptions .lenientExpandOpen ())
59+ .setQuery (queryStringQuery ("quick" ))
60+ .get (),
61+ 3L );
5662 }
5763
58- public void testResolveIndexRouting () throws Exception {
64+ public void testResolveIndexRouting () {
5965 createIndex ("test1" );
6066 createIndex ("test2" );
6167 client ().admin ().cluster ().prepareHealth ().setWaitForEvents (Priority .LANGUID ).setWaitForGreenStatus ().execute ().actionGet ();
@@ -97,9 +103,10 @@ public void testResolveIndexRouting() throws Exception {
97103 }
98104 }
99105
100- public void testResolveSearchRouting () throws Exception {
106+ public void testResolveSearchRouting () {
101107 createIndex ("test1" );
102108 createIndex ("test2" );
109+ createIndex ("test3" );
103110 client ().admin ().cluster ().prepareHealth ().setWaitForEvents (Priority .LANGUID ).setWaitForGreenStatus ().execute ().actionGet ();
104111
105112 client ().admin ().indices ().prepareAliases ()
@@ -108,7 +115,10 @@ public void testResolveSearchRouting() throws Exception {
108115 .addAliasAction (AliasActions .add ().index ("test2" ).alias ("alias20" ).routing ("0" ))
109116 .addAliasAction (AliasActions .add ().index ("test2" ).alias ("alias21" ).routing ("1" ))
110117 .addAliasAction (AliasActions .add ().index ("test1" ).alias ("alias0" ).routing ("0" ))
111- .addAliasAction (AliasActions .add ().index ("test2" ).alias ("alias0" ).routing ("0" )).get ();
118+ .addAliasAction (AliasActions .add ().index ("test2" ).alias ("alias0" ).routing ("0" ))
119+ .addAliasAction (AliasActions .add ().index ("test3" ).alias ("alias3tw" ).routing ("tw " ))
120+ .addAliasAction (AliasActions .add ().index ("test3" ).alias ("alias3ltw" ).routing (" ltw " ))
121+ .addAliasAction (AliasActions .add ().index ("test3" ).alias ("alias3lw" ).routing (" lw" )).get ();
112122
113123 ClusterState state = clusterService ().state ();
114124 IndexNameExpressionResolver indexNameExpressionResolver = internalCluster ().getInstance (IndexNameExpressionResolver .class );
@@ -118,7 +128,9 @@ public void testResolveSearchRouting() throws Exception {
118128 assertThat (indexNameExpressionResolver .resolveSearchRouting (state , null , "alias10" ), equalTo (newMap ("test1" , newSet ("0" ))));
119129 assertThat (indexNameExpressionResolver .resolveSearchRouting (state , "0" , "alias10" ), equalTo (newMap ("test1" , newSet ("0" ))));
120130 assertThat (indexNameExpressionResolver .resolveSearchRouting (state , "1" , "alias10" ), nullValue ());
121- assertThat (indexNameExpressionResolver .resolveSearchRouting (state , null , "alias0" ), equalTo (newMap ("test1" , newSet ("0" ), "test2" , newSet ("0" ))));
131+ assertThat (
132+ indexNameExpressionResolver .resolveSearchRouting (state , null , "alias0" ),
133+ equalTo (newMap ("test1" , newSet ("0" ), "test2" , newSet ("0" ))));
122134
123135 assertThat (indexNameExpressionResolver .resolveSearchRouting (state , null , new String []{"alias10" , "alias20" }),
124136 equalTo (newMap ("test1" , newSet ("0" ), "test2" , newSet ("0" ))));
@@ -143,13 +155,42 @@ public void testResolveSearchRouting() throws Exception {
143155 equalTo (newMap ("test1" , newSet ("0" ), "test2" , newSet ("1" ))));
144156 assertThat (indexNameExpressionResolver .resolveSearchRouting (state , "0,1,2" , new String []{"test1" , "alias10" , "alias21" }),
145157 equalTo (newMap ("test1" , newSet ("0" , "1" , "2" ), "test2" , newSet ("1" ))));
158+
159+ assertThat (
160+ indexNameExpressionResolver .resolveSearchRouting (state , "tw , ltw , lw" , "test1" ),
161+ equalTo (newMap ("test1" , newSet ("tw " , " ltw " , " lw" ))));
162+ assertThat (
163+ indexNameExpressionResolver .resolveSearchRouting (state , "tw , ltw , lw" , "alias3tw" ),
164+ equalTo (newMap ("test3" , newSet ("tw " ))));
165+ assertThat (
166+ indexNameExpressionResolver .resolveSearchRouting (state , "tw , ltw , lw" , "alias3ltw" ),
167+ equalTo (newMap ("test3" , newSet (" ltw " ))));
168+ assertThat (
169+ indexNameExpressionResolver .resolveSearchRouting (state , "tw , ltw , lw" , "alias3lw" ),
170+ equalTo (newMap ("test3" , newSet (" lw" ))));
171+ assertThat (
172+ indexNameExpressionResolver .resolveSearchRouting (state , "0,tw , ltw , lw" , "test1" , "alias3ltw" ),
173+ equalTo (newMap ("test1" , newSet ("0" , "tw " , " ltw " , " lw" ), "test3" , newSet (" ltw " ))));
174+
175+ assertThat (
176+ indexNameExpressionResolver .resolveSearchRouting (state , "0,1,2,tw , ltw , lw" , (String [])null ),
177+ equalTo (newMap (
178+ "test1" , newSet ("0" , "1" , "2" , "tw " , " ltw " , " lw" ),
179+ "test2" , newSet ("0" , "1" , "2" , "tw " , " ltw " , " lw" ),
180+ "test3" , newSet ("0" , "1" , "2" , "tw " , " ltw " , " lw" ))));
181+
182+ assertThat (
183+ indexNameExpressionResolver .resolveSearchRoutingAllIndices (state .metaData (), "0,1,2,tw , ltw , lw" ),
184+ equalTo (newMap (
185+ "test1" , newSet ("0" , "1" , "2" , "tw " , " ltw " , " lw" ),
186+ "test2" , newSet ("0" , "1" , "2" , "tw " , " ltw " , " lw" ),
187+ "test3" , newSet ("0" , "1" , "2" , "tw " , " ltw " , " lw" ))));
146188 }
147189
148190 private <T > Set <T > newSet (T ... elements ) {
149191 return newHashSet (elements );
150192 }
151193
152-
153194 private <K , V > Map <K , V > newMap (K key , V value ) {
154195 Map <K , V > r = new HashMap <>();
155196 r .put (key , value );
@@ -163,4 +204,12 @@ private <K, V> Map<K, V> newMap(K key1, V value1, K key2, V value2) {
163204 return r ;
164205 }
165206
207+ private <K , V > Map <K , V > newMap (K key1 , V value1 , K key2 , V value2 , K key3 , V value3 ) {
208+ Map <K , V > r = new HashMap <>();
209+ r .put (key1 , value1 );
210+ r .put (key2 , value2 );
211+ r .put (key3 , value3 );
212+ return r ;
213+ }
214+
166215}
0 commit comments