Quellcode durchsuchen

Remove content type auto-detection from search templates

Now that search templates always get converted to json, we don't need to try and auto-detect their content-type, which anyways didn't work as expected before given that only json was really working.
javanna vor 8 Jahren
Ursprung
Commit
594f00c582

+ 3 - 1
modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/SearchTemplateResponse.java

@@ -26,6 +26,7 @@ import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.common.xcontent.StatusToXContentObject;
 import org.elasticsearch.common.xcontent.XContentBuilder;
+import org.elasticsearch.common.xcontent.XContentType;
 import org.elasticsearch.rest.RestStatus;
 
 import java.io.IOException;
@@ -81,7 +82,8 @@ public class SearchTemplateResponse  extends ActionResponse implements StatusToX
             response.toXContent(builder, params);
         } else {
             builder.startObject();
-            builder.rawField("template_output", source);
+            //we can assume the template is always json as we convert it before compiling it
+            builder.rawField("template_output", source, XContentType.JSON);
             builder.endObject();
         }
         return builder;

+ 3 - 2
modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java

@@ -32,6 +32,7 @@ import org.elasticsearch.common.settings.Settings;
 import org.elasticsearch.common.xcontent.NamedXContentRegistry;
 import org.elasticsearch.common.xcontent.XContentFactory;
 import org.elasticsearch.common.xcontent.XContentParser;
+import org.elasticsearch.common.xcontent.XContentType;
 import org.elasticsearch.index.query.QueryParseContext;
 import org.elasticsearch.script.ExecutableScript;
 import org.elasticsearch.script.Script;
@@ -82,8 +83,8 @@ public class TransportSearchTemplateAction extends HandledTransportAction<Search
 
             // Executes the search
             SearchRequest searchRequest = request.getRequest();
-
-            try (XContentParser parser = XContentFactory.xContent(source).createParser(xContentRegistry, source)) {
+            //we can assume the template is always json as we convert it before compiling it
+            try (XContentParser parser = XContentFactory.xContent(XContentType.JSON).createParser(xContentRegistry, source)) {
                 SearchSourceBuilder builder = SearchSourceBuilder.searchSource();
                 builder.parseXContent(new QueryParseContext(parser));
                 builder.explain(request.isExplain());