summaryrefslogtreecommitdiff
path: root/modules/lang-mustache/src/main/java/org
diff options
context:
space:
mode:
authorDavid Pilato <david@pilato.fr>2016-09-13 18:10:52 +0200
committerDavid Pilato <david@pilato.fr>2016-09-19 17:52:13 +0200
commited4d0881b188df46a41bea11e166f79ba925d77c (patch)
tree0eb989503387fd866bb2b5df080c2d238062b439 /modules/lang-mustache/src/main/java/org
parentbd93b3dce6dd92b06b150ec4834382483857bb02 (diff)
Add profile and explain parameters to template API
We can now run templates using `explain` and/or `profile` parameters. Which is interesting when you have defined a complicated profile but want to debug it in an easier way than running the full query again. You can use `explain` parameter when running a template: ```js GET /_search/template { "file": "my_template", "params": { "status": [ "pending", "published" ] }, "explain": true } ``` You can use `profile` parameter when running a template: ```js GET /_search/template { "file": "my_template", "params": { "status": [ "pending", "published" ] }, "profile": true } ```
Diffstat (limited to 'modules/lang-mustache/src/main/java/org')
-rw-r--r--modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/RestSearchTemplateAction.java2
-rw-r--r--modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/SearchTemplateRequest.java22
-rw-r--r--modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/SearchTemplateRequestBuilder.java16
-rw-r--r--modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java2
4 files changed, 42 insertions, 0 deletions
diff --git a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/RestSearchTemplateAction.java b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/RestSearchTemplateAction.java
index 18637b15e8..6d830a21f5 100644
--- a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/RestSearchTemplateAction.java
+++ b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/RestSearchTemplateAction.java
@@ -68,6 +68,8 @@ public class RestSearchTemplateAction extends BaseRestHandler {
request.setScriptType(ScriptService.ScriptType.STORED);
request.setScript(s);
}, new ParseField("id"));
+ PARSER.declareBoolean(SearchTemplateRequest::setExplain, new ParseField("explain"));
+ PARSER.declareBoolean(SearchTemplateRequest::setProfile, new ParseField("profile"));
PARSER.declareField((parser, request, value) -> {
request.setScriptType(ScriptService.ScriptType.INLINE);
if (parser.currentToken() == XContentParser.Token.START_OBJECT) {
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 a4a6533604..1fa7f24de8 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
@@ -41,6 +41,8 @@ public class SearchTemplateRequest extends ActionRequest<SearchTemplateRequest>
private SearchRequest request;
private boolean simulate = false;
+ private boolean explain = false;
+ private boolean profile = false;
private ScriptService.ScriptType scriptType;
private String script;
private Map<String, Object> scriptParams;
@@ -69,6 +71,22 @@ public class SearchTemplateRequest extends ActionRequest<SearchTemplateRequest>
this.simulate = simulate;
}
+ public boolean isExplain() {
+ return explain;
+ }
+
+ public void setExplain(boolean explain) {
+ this.explain = explain;
+ }
+
+ public boolean isProfile() {
+ return profile;
+ }
+
+ public void setProfile(boolean profile) {
+ this.profile = profile;
+ }
+
public ScriptService.ScriptType getScriptType() {
return scriptType;
}
@@ -123,6 +141,8 @@ public class SearchTemplateRequest extends ActionRequest<SearchTemplateRequest>
super.readFrom(in);
request = in.readOptionalStreamable(SearchRequest::new);
simulate = in.readBoolean();
+ explain = in.readBoolean();
+ profile = in.readBoolean();
scriptType = ScriptService.ScriptType.readFrom(in);
script = in.readOptionalString();
if (in.readBoolean()) {
@@ -135,6 +155,8 @@ public class SearchTemplateRequest extends ActionRequest<SearchTemplateRequest>
super.writeTo(out);
out.writeOptionalStreamable(request);
out.writeBoolean(simulate);
+ out.writeBoolean(explain);
+ out.writeBoolean(profile);
ScriptService.ScriptType.writeTo(scriptType, out);
out.writeOptionalString(script);
boolean hasParams = scriptParams != null;
diff --git a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/SearchTemplateRequestBuilder.java b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/SearchTemplateRequestBuilder.java
index 811c2523e0..52f51b7254 100644
--- a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/SearchTemplateRequestBuilder.java
+++ b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/SearchTemplateRequestBuilder.java
@@ -47,6 +47,22 @@ public class SearchTemplateRequestBuilder
return this;
}
+ /**
+ * Enables explanation for each hit on how its score was computed. Disabled by default
+ */
+ public SearchTemplateRequestBuilder setExplain(boolean explain) {
+ request.setExplain(explain);
+ return this;
+ }
+
+ /**
+ * Enables profiling of the query. Disabled by default
+ */
+ public SearchTemplateRequestBuilder setProfile(boolean profile) {
+ request.setProfile(profile);
+ return this;
+ }
+
public SearchTemplateRequestBuilder setScriptType(ScriptService.ScriptType scriptType) {
request.setScriptType(scriptType);
return this;
diff --git a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java
index 9df5a29b9c..f323fcf450 100644
--- a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java
+++ b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java
@@ -84,6 +84,8 @@ public class TransportSearchTemplateAction extends HandledTransportAction<Search
SearchSourceBuilder builder = SearchSourceBuilder.searchSource();
builder.parseXContent(new QueryParseContext(searchRequestParsers.queryParsers, parser, parseFieldMatcher),
searchRequestParsers.aggParsers, searchRequestParsers.suggesters, searchRequestParsers.searchExtParsers);
+ builder.explain(request.isExplain());
+ builder.profile(request.isProfile());
searchRequest.source(builder);
searchAction.execute(searchRequest, new ActionListener<SearchResponse>() {