summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/index
diff options
context:
space:
mode:
authorjavanna <cavannaluca@gmail.com>2015-10-05 14:50:15 +0200
committerLuca Cavanna <cavannaluca@gmail.com>2015-10-05 14:50:15 +0200
commit3a0d1841d9dc99b752d13118ea303f1497c28fc0 (patch)
tree6cb6b7c1ecd952c7a167abf86daa6dfbca8e3431 /core/src/main/java/org/elasticsearch/index
parente8d74bb9d9093e3a3184bad73fabd9de99772d09 (diff)
Query refactoring: simplify IndexQueryParserService parse methods and prepare the field for #13859
Relates to #13859
Diffstat (limited to 'core/src/main/java/org/elasticsearch/index')
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/IndexQueryParserService.java42
1 files changed, 29 insertions, 13 deletions
diff --git a/core/src/main/java/org/elasticsearch/index/query/IndexQueryParserService.java b/core/src/main/java/org/elasticsearch/index/query/IndexQueryParserService.java
index d4f7491fb1..bbd9f84e81 100644
--- a/core/src/main/java/org/elasticsearch/index/query/IndexQueryParserService.java
+++ b/core/src/main/java/org/elasticsearch/index/query/IndexQueryParserService.java
@@ -197,15 +197,6 @@ public class IndexQueryParserService extends AbstractIndexComponent {
}
}
- @Nullable
- public Query parseInnerQuery(QueryShardContext context) throws IOException {
- Query query = context.parseContext().parseInnerQueryBuilder().toQuery(context);
- if (query == null) {
- query = Queries.newMatchNoDocsQuery();
- }
- return query;
- }
-
public QueryShardContext getShardContext() {
return cache.get();
}
@@ -258,16 +249,41 @@ public class IndexQueryParserService extends AbstractIndexComponent {
context.reset(parser);
try {
context.parseFieldMatcher(parseFieldMatcher);
- Query query = context.parseContext().parseInnerQueryBuilder().toQuery(context);
- if (query == null) {
- query = Queries.newMatchNoDocsQuery();
- }
+ Query query = parseInnerQuery(context);
return new ParsedQuery(query, context.copyNamedQueries());
} finally {
context.reset(null);
}
}
+ public Query parseInnerQuery(QueryShardContext context) throws IOException {
+ return toQuery(context.parseContext().parseInnerQueryBuilder(), context);
+ }
+
+ public ParsedQuery toQuery(QueryBuilder<?> queryBuilder) {
+ QueryShardContext context = cache.get();
+ context.reset();
+ context.parseFieldMatcher(parseFieldMatcher);
+ try {
+ Query query = toQuery(queryBuilder, context);
+ return new ParsedQuery(query, context.copyNamedQueries());
+ } catch(QueryShardException | ParsingException e ) {
+ throw e;
+ } catch(Exception e) {
+ throw new QueryShardException(context, "failed to create query: {}", e, queryBuilder);
+ } finally {
+ context.reset();
+ }
+ }
+
+ private static Query toQuery(QueryBuilder<?> queryBuilder, QueryShardContext context) throws IOException {
+ Query query = queryBuilder.toQuery(context);
+ if (query == null) {
+ query = Queries.newMatchNoDocsQuery();
+ }
+ return query;
+ }
+
public ParseFieldMatcher parseFieldMatcher() {
return parseFieldMatcher;
}