/**
   * Perform filter query into one ES index and type to get records with any value stored in one
   * field.
   *
   * @param indexName to search in
   * @param indexType to search
   * @param fieldName name of field to search for any value in it
   * @return
   */
  public SearchResponse performQueryByOneFieldAnyValue(
      String indexName, String indexType, String fieldName) throws SearchIndexMissingException {
    try {
      SearchRequestBuilder searchBuilder = getClient().prepareSearch(indexName).setTypes(indexType);

      searchBuilder.setFilter(FilterBuilders.notFilter(FilterBuilders.missingFilter(fieldName)));
      searchBuilder.setQuery(QueryBuilders.matchAllQuery());

      final SearchResponse response = searchBuilder.execute().actionGet();
      return response;
    } catch (IndexMissingException e) {
      log.log(Level.WARNING, e.getMessage());
      throw new SearchIndexMissingException(e);
    }
  }
  @Test
  public void testMultipleAliasesPrecedence() throws Exception {
    client()
        .admin()
        .indices()
        .preparePutTemplate("template1")
        .setTemplate("*")
        .setOrder(0)
        .addAlias(new Alias("alias1"))
        .addAlias(new Alias("{index}-alias"))
        .addAlias(new Alias("alias3").filter(FilterBuilders.missingFilter("test")))
        .addAlias(new Alias("alias4"))
        .get();

    client()
        .admin()
        .indices()
        .preparePutTemplate("template2")
        .setTemplate("te*")
        .setOrder(1)
        .addAlias(new Alias("alias1").routing("test"))
        .addAlias(new Alias("alias3"))
        .get();

    assertAcked(
        prepareCreate("test").addAlias(new Alias("test-alias").searchRouting("test-routing")));

    ensureGreen();

    GetAliasesResponse getAliasesResponse =
        client().admin().indices().prepareGetAliases().addIndices("test").get();
    assertThat(getAliasesResponse.getAliases().get("test").size(), equalTo(4));

    for (AliasMetaData aliasMetaData : getAliasesResponse.getAliases().get("test")) {
      assertThat(
          aliasMetaData.alias(),
          anyOf(equalTo("alias1"), equalTo("test-alias"), equalTo("alias3"), equalTo("alias4")));
      if ("alias1".equals(aliasMetaData.alias())) {
        assertThat(aliasMetaData.indexRouting(), equalTo("test"));
        assertThat(aliasMetaData.searchRouting(), equalTo("test"));
      } else if ("alias3".equals(aliasMetaData.alias())) {
        assertThat(aliasMetaData.filter(), nullValue());
      } else if ("test-alias".equals(aliasMetaData.alias())) {
        assertThat(aliasMetaData.indexRouting(), nullValue());
        assertThat(aliasMetaData.searchRouting(), equalTo("test-routing"));
      }
    }
  }
 /** --- Internal Methods --- */
 FilterBuilder getCurrentFilter() {
   return FilterBuilders.missingFilter("reformed");
 }