summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Cavanna <javanna@users.noreply.github.com>2016-11-29 20:52:43 +0100
committerGitHub <noreply@github.com>2016-11-29 20:52:43 +0100
commit6eaff9432ddc05adad528761f4ce65545cce9cf8 (patch)
tree448a4b8d0b2c652667a2d4d037fd0861f40ef6ae
parentbe4074e13d188d71e1bf2c4b1a4da97118713c03 (diff)
SearchTemplateRequest to implement CompositeIndicesRequest (#21865)
SearchTemplateRequest to implement CompositeIndicesRequest Given that SearchTemplateRequest effectively delegates to search when a search is being executed, it should implement the CompositeIndicesRequest interface. The subrequests method should return a single search request. When a search is not going to be executed, because we are in simulate mode, there are no inner requests, and there are no corresponding indices to that request either. Closes #21747
-rw-r--r--core/src/main/java/org/elasticsearch/action/CompositeIndicesRequest.java2
-rw-r--r--modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MultiSearchTemplateRequest.java6
-rw-r--r--modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/SearchTemplateRequest.java22
-rw-r--r--modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/MultiSearchTemplateRequestTests.java10
4 files changed, 23 insertions, 17 deletions
diff --git a/core/src/main/java/org/elasticsearch/action/CompositeIndicesRequest.java b/core/src/main/java/org/elasticsearch/action/CompositeIndicesRequest.java
index 5c88c57b83..8d18df0c27 100644
--- a/core/src/main/java/org/elasticsearch/action/CompositeIndicesRequest.java
+++ b/core/src/main/java/org/elasticsearch/action/CompositeIndicesRequest.java
@@ -25,7 +25,7 @@ import java.util.List;
* Needs to be implemented by all {@link org.elasticsearch.action.ActionRequest} subclasses that are composed of multiple subrequests
* which relate to one or more indices. Allows to retrieve those subrequests and reason about them separately. A composite request is
* executed by its own transport action class (e.g. {@link org.elasticsearch.action.search.TransportMultiSearchAction}), which goes
- * through all the subrequests and delegates their exection to the appropriate transport action (e.g.
+ * through all the subrequests and delegates their execution to the appropriate transport action (e.g.
* {@link org.elasticsearch.action.search.TransportSearchAction}) for each single item.
*/
public interface CompositeIndicesRequest {
diff --git a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MultiSearchTemplateRequest.java b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MultiSearchTemplateRequest.java
index 93549d1d79..8d8037fa10 100644
--- a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MultiSearchTemplateRequest.java
+++ b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MultiSearchTemplateRequest.java
@@ -63,7 +63,11 @@ public class MultiSearchTemplateRequest extends ActionRequest implements Composi
@Override
public List<? extends IndicesRequest> subRequests() {
- return requests;
+ List<IndicesRequest> indicesRequests = new ArrayList<>();
+ for (SearchTemplateRequest request : requests) {
+ indicesRequests.addAll(request.subRequests());
+ }
+ return indicesRequests;
}
@Override
diff --git a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/SearchTemplateRequest.java b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/SearchTemplateRequest.java
index b405d0950e..6b3c980be3 100644
--- a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/SearchTemplateRequest.java
+++ b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/SearchTemplateRequest.java
@@ -21,15 +21,16 @@ package org.elasticsearch.script.mustache;
import org.elasticsearch.action.ActionRequest;
import org.elasticsearch.action.ActionRequestValidationException;
+import org.elasticsearch.action.CompositeIndicesRequest;
import org.elasticsearch.action.IndicesRequest;
import org.elasticsearch.action.search.SearchRequest;
-import org.elasticsearch.action.support.IndicesOptions;
-import org.elasticsearch.common.Strings;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
import org.elasticsearch.script.ScriptType;
import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
import java.util.Map;
import static org.elasticsearch.action.ValidateActions.addValidationError;
@@ -37,7 +38,7 @@ import static org.elasticsearch.action.ValidateActions.addValidationError;
/**
* A request to execute a search based on a search template.
*/
-public class SearchTemplateRequest extends ActionRequest implements IndicesRequest {
+public class SearchTemplateRequest extends ActionRequest implements CompositeIndicesRequest {
private SearchRequest request;
private boolean simulate = false;
@@ -167,12 +168,13 @@ public class SearchTemplateRequest extends ActionRequest implements IndicesReque
}
@Override
- public String[] indices() {
- return request != null ? request.indices() : Strings.EMPTY_ARRAY;
- }
-
- @Override
- public IndicesOptions indicesOptions() {
- return request != null ? request.indicesOptions() : SearchRequest.DEFAULT_INDICES_OPTIONS;
+ public List<? extends IndicesRequest> subRequests() {
+ //if we are simulating no index is involved in the request
+ if (simulate) {
+ assert request == null;
+ return Collections.emptyList();
+ }
+ //composite request as it delegates to search, but it holds one single action (search itself)
+ return Collections.singletonList(request);
}
}
diff --git a/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/MultiSearchTemplateRequestTests.java b/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/MultiSearchTemplateRequestTests.java
index e3b633006c..bec7e24d3a 100644
--- a/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/MultiSearchTemplateRequestTests.java
+++ b/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/MultiSearchTemplateRequestTests.java
@@ -41,16 +41,16 @@ public class MultiSearchTemplateRequestTests extends ESTestCase {
assertThat(request.requests().size(), equalTo(3));
assertThat(request.requests().get(0).getRequest().indices()[0], equalTo("test0"));
assertThat(request.requests().get(0).getRequest().indices()[1], equalTo("test1"));
- assertThat(request.requests().get(0).indices(), arrayContaining("test0", "test1"));
+ assertThat(request.requests().get(0).getRequest().indices(), arrayContaining("test0", "test1"));
assertThat(request.requests().get(0).getRequest().requestCache(), equalTo(true));
assertThat(request.requests().get(0).getRequest().preference(), nullValue());
- assertThat(request.requests().get(1).indices()[0], equalTo("test2"));
- assertThat(request.requests().get(1).indices()[1], equalTo("test3"));
+ assertThat(request.requests().get(1).getRequest().indices()[0], equalTo("test2"));
+ assertThat(request.requests().get(1).getRequest().indices()[1], equalTo("test3"));
assertThat(request.requests().get(1).getRequest().types()[0], equalTo("type1"));
assertThat(request.requests().get(1).getRequest().requestCache(), nullValue());
assertThat(request.requests().get(1).getRequest().preference(), equalTo("_local"));
- assertThat(request.requests().get(2).indices()[0], equalTo("test4"));
- assertThat(request.requests().get(2).indices()[1], equalTo("test1"));
+ assertThat(request.requests().get(2).getRequest().indices()[0], equalTo("test4"));
+ assertThat(request.requests().get(2).getRequest().indices()[1], equalTo("test1"));
assertThat(request.requests().get(2).getRequest().types()[0], equalTo("type2"));
assertThat(request.requests().get(2).getRequest().types()[1], equalTo("type1"));
assertThat(request.requests().get(2).getRequest().routing(), equalTo("123"));