diff options
author | Martijn van Groningen <martijn.v.groningen@gmail.com> | 2016-09-02 19:11:38 +0200 |
---|---|---|
committer | Martijn van Groningen <martijn.v.groningen@gmail.com> | 2016-09-06 18:44:48 +0200 |
commit | 245882cde3e234efcb081107b2182a5b27ebd114 (patch) | |
tree | a74164291aa8ee2eda6333d03e8e12175f54912f /core/src/main/java/org/elasticsearch/index/query/QueryRewriteContext.java | |
parent | 0d7dfcd798232be419b5dcb28b778168aefd1681 (diff) |
* Removed `script.default_lang` setting and made `painless` the hardcoded default script language.
** The default script language is now maintained in `Script` class.
* Added `script.legacy.default_lang` setting that controls the default language for scripts that are stored inside documents (for example percolator queries). This defaults to groovy.
** Added `QueryParseContext#getDefaultScriptLanguage()` that manages the default scripting language. Returns always `painless`, unless loading query/search request in legacy mode then the returns what is configured in `script.legacy.default_lang` setting.
** In the aggregation parsing code added `ParserContext` that also holds the default scripting language like `QueryParseContext`. Most parser don't have access to `QueryParseContext`. This is for scripts in aggregations.
* The `lang` script field is always serialized (toXContent).
Closes #20122
Diffstat (limited to 'core/src/main/java/org/elasticsearch/index/query/QueryRewriteContext.java')
-rw-r--r-- | core/src/main/java/org/elasticsearch/index/query/QueryRewriteContext.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/core/src/main/java/org/elasticsearch/index/query/QueryRewriteContext.java b/core/src/main/java/org/elasticsearch/index/query/QueryRewriteContext.java index d8ec9ef2a4..f12605088e 100644 --- a/core/src/main/java/org/elasticsearch/index/query/QueryRewriteContext.java +++ b/core/src/main/java/org/elasticsearch/index/query/QueryRewriteContext.java @@ -28,6 +28,7 @@ import org.elasticsearch.index.IndexSettings; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.indices.query.IndicesQueriesRegistry; import org.elasticsearch.script.ScriptService; +import org.elasticsearch.script.ScriptSettings; /** * Context object used to rewrite {@link QueryBuilder} instances into simplified version. @@ -101,9 +102,18 @@ public class QueryRewriteContext implements ParseFieldMatcherSupplier { /** * Returns a new {@link QueryParseContext} that wraps the provided parser, using the ParseFieldMatcher settings that - * are configured in the index settings + * are configured in the index settings. The default script language will always default to Painless. */ public QueryParseContext newParseContext(XContentParser parser) { return new QueryParseContext(indicesQueriesRegistry, parser, indexSettings.getParseFieldMatcher()); } + + /** + * Returns a new {@link QueryParseContext} like {@link #newParseContext(XContentParser)} with the only diffence, that + * the default script language will default to what has been set in the 'script.legacy.default_lang' setting. + */ + public QueryParseContext newParseContextWithLegacyScriptLanguage(XContentParser parser) { + String defaultScriptLanguage = ScriptSettings.getLegacyDefaultLang(indexSettings.getNodeSettings()); + return new QueryParseContext(defaultScriptLanguage, indicesQueriesRegistry, parser, indexSettings.getParseFieldMatcher()); + } } |