Browse Source

Add docs for errors in GetAlias API (#51850)

Closes #31499
Maxim 5 years ago
parent
commit
b706239145

+ 15 - 0
client/rest-high-level/src/test/java/org/elasticsearch/client/IndicesClientIT.java

@@ -1106,6 +1106,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
                     highLevelClient().indices()::getAliasAsync);
             assertThat(getAliasesResponse.status(), equalTo(RestStatus.NOT_FOUND));
             assertThat(getAliasesResponse.getError(), equalTo("alias [" + alias + "] missing"));
+            assertThat(getAliasesResponse.getException(), nullValue());
         }
         createIndex(index, Settings.EMPTY);
         client().performRequest(new Request(HttpPut.METHOD_NAME, index + "/_alias/" + alias));
@@ -1113,7 +1114,9 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
             GetAliasesRequest getAliasesRequest = new GetAliasesRequest().indices(index, "non_existent_index");
             GetAliasesResponse getAliasesResponse = execute(getAliasesRequest, highLevelClient().indices()::getAlias,
                     highLevelClient().indices()::getAliasAsync);
+            assertThat(getAliasesResponse.getAliases().size(), equalTo(0));
             assertThat(getAliasesResponse.status(), equalTo(RestStatus.NOT_FOUND));
+            assertThat(getAliasesResponse.getError(), nullValue());
             assertThat(getAliasesResponse.getException().getMessage(),
                     equalTo("Elasticsearch exception [type=index_not_found_exception, reason=no such index [non_existent_index]]"));
         }
@@ -1121,6 +1124,7 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
             GetAliasesRequest getAliasesRequest = new GetAliasesRequest().indices(index, "non_existent_index").aliases(alias);
             GetAliasesResponse getAliasesResponse = execute(getAliasesRequest, highLevelClient().indices()::getAlias,
                     highLevelClient().indices()::getAliasAsync);
+            assertThat(getAliasesResponse.getAliases().size(), equalTo(0));
             assertThat(getAliasesResponse.status(), equalTo(RestStatus.NOT_FOUND));
             assertThat(getAliasesResponse.getException().getMessage(),
                     equalTo("Elasticsearch exception [type=index_not_found_exception, reason=no such index [non_existent_index]]"));
@@ -1129,13 +1133,17 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
             GetAliasesRequest getAliasesRequest = new GetAliasesRequest().indices("non_existent_index*");
             GetAliasesResponse getAliasesResponse = execute(getAliasesRequest, highLevelClient().indices()::getAlias,
                     highLevelClient().indices()::getAliasAsync);
+            assertThat(getAliasesResponse.status(), equalTo(RestStatus.OK));
             assertThat(getAliasesResponse.getAliases().size(), equalTo(0));
+            assertThat(getAliasesResponse.getException(), nullValue());
+            assertThat(getAliasesResponse.getError(), nullValue());
         }
         {
             GetAliasesRequest getAliasesRequest = new GetAliasesRequest().indices(index).aliases(alias, "non_existent_alias");
             GetAliasesResponse getAliasesResponse = execute(getAliasesRequest, highLevelClient().indices()::getAlias,
                     highLevelClient().indices()::getAliasAsync);
             assertThat(getAliasesResponse.status(), equalTo(RestStatus.NOT_FOUND));
+            assertThat(getAliasesResponse.getError(), equalTo("alias [non_existent_alias] missing"));
 
             assertThat(getAliasesResponse.getAliases().size(), equalTo(1));
             assertThat(getAliasesResponse.getAliases().get(index).size(), equalTo(1));
@@ -1155,6 +1163,13 @@ public class IndicesClientIT extends ESRestHighLevelClientTestCase {
             }
             */
         }
+        {
+            GetAliasesRequest getAliasesRequest = new GetAliasesRequest().aliases("non_existent_alias*");
+            GetAliasesResponse getAliasesResponse = execute(getAliasesRequest, highLevelClient().indices()::getAlias,
+                highLevelClient().indices()::getAliasAsync);
+            assertThat(getAliasesResponse.status(), equalTo(RestStatus.OK));
+            assertThat(getAliasesResponse.getAliases().size(), equalTo(0));
+        }
     }
 
     public void testIndexPutSettings() throws IOException {

+ 10 - 0
client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/IndicesClientDocumentationIT.java

@@ -109,6 +109,7 @@ import java.util.concurrent.TimeUnit;
 
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasSize;
+import static org.hamcrest.Matchers.nullValue;
 
 /**
  * This class is used to generate the Java Indices API documentation.
@@ -1909,8 +1910,17 @@ public class IndicesClientDocumentationIT extends ESRestHighLevelClientTestCase
             Map<String, Set<AliasMetaData>> aliases = response.getAliases(); // <1>
             // end::get-alias-response
 
+            // tag::get-alias-response-error
+            RestStatus status = response.status(); // <1>
+            ElasticsearchException exception = response.getException(); // <2>
+            String error = response.getError(); // <3>
+            // end::get-alias-response-error
+
             assertThat(response.getAliases().get("index").size(), equalTo(1));
             assertThat(response.getAliases().get("index").iterator().next().alias(), equalTo("alias"));
+            assertThat(status, equalTo(RestStatus.OK));
+            assertThat(error, nullValue());
+            assertThat(exception, nullValue());
 
             // tag::get-alias-execute-listener
             ActionListener<GetAliasesResponse> listener =

+ 21 - 1
docs/java-rest/high-level/indices/get_alias.asciidoc

@@ -62,4 +62,24 @@ executed operation as follows:
 --------------------------------------------------
 include-tagged::{doc-tests-file}[{api}-response]
 --------------------------------------------------
-<1> Retrieves a map of indices and their aliases
+<1> Retrieves a map of indices and their aliases
+
++{response}+ class contains information about errors if they occurred.
+This info could be in fields `error` or `exception` depends on a case.
+
+["source","java",subs="attributes,callouts,macros"]
+--------------------------------------------------
+include-tagged::{doc-tests-file}[{api}-response-error]
+--------------------------------------------------
+<1> Client sets status to `NOT_FOUND` if at least one item of specified
+indices or aliases is not found. Otherwise it is `OK`.
+
+<2> If at least one item of specified indices isn't exist client sets
+`ElasticsearchException` and returns empty result.
+
+<3> If at least one item of specified aliases ins't exist client puts
+error description in `error` field and returns partial result if any
+of other patterns match.
+
+If user specified indices or aliases as regular expressions
+and nothing was found client returns `OK` status and no errors.