@Override protected QueryParseContext initialValue() { return new QueryParseContext(index, IndexQueryParserService.this); } };
/** * Returns a new {@link QueryParseContext} that wraps the provided parser. */ public QueryParseContext newParseContext(XContentParser parser) { return new QueryParseContext(parser); }
public static QueryBuilder getQueryContent(XContentParser requestParser) { QueryParseContext context = new QueryParseContext(requestParser); return context.parseTopLevelQueryBuilder(); }
/** * 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, parser); }
private SearchSourceBuilder toSearchSourceBuilder(JsonNode queryMap) throws ClientException { SearchSourceBuilder searchSourceBuilder = null; try { String content = queryMap.toString(); searchSourceBuilder = new SearchSourceBuilder(); SearchModule searchModule = new SearchModule(Settings.EMPTY, false, Collections.emptyList()); XContentParser parser = XContentFactory.xContent(XContentType.JSON) .createParser(new NamedXContentRegistry(searchModule.getNamedXContents()), content); searchSourceBuilder.parseXContent(new QueryParseContext(parser)); logger.debug("Search builder: {}", searchSourceBuilder); return searchSourceBuilder; } catch (Throwable t) { throw new ClientException(ClientErrorCodes.ACTION_ERROR, t, CLIENT_QUERY_PARSING_ERROR_MSG); } }
private SearchSourceBuilder toSearchSourceBuilder(JsonNode queryMap) throws ClientException { SearchSourceBuilder searchSourceBuilder = null; try { String content = queryMap.toString(); searchSourceBuilder = new SearchSourceBuilder(); SearchModule searchModule = new SearchModule(Settings.EMPTY, false, Collections.emptyList()); XContentParser parser = XContentFactory.xContent(XContentType.JSON) .createParser(new NamedXContentRegistry(searchModule.getNamedXContents()), content); searchSourceBuilder.parseXContent(new QueryParseContext(parser)); logger.debug("Search builder: {}", searchSourceBuilder); return searchSourceBuilder; } catch (Throwable t) { throw new ClientException(ClientErrorCodes.ACTION_ERROR, t, CLIENT_QUERY_PARSING_ERROR_MSG); } }
public AliasFilter buildAliasFilter(ClusterState state, String index, String... expressions) { /* Being static, parseAliasFilter doesn't have access to whatever guts it needs to parse a query. Instead of passing in a bunch * of dependencies we pass in a function that can perform the parsing. */ CheckedFunction<byte[], Optional<QueryBuilder>, IOException> filterParser = bytes -> { try (XContentParser parser = XContentFactory.xContent(bytes).createParser(xContentRegistry, bytes)) { return new QueryParseContext(parser).parseInnerQueryBuilder(); } }; String[] aliases = indexNameExpressionResolver.filteringAliases(state, index, expressions); IndexMetaData indexMetaData = state.metaData().index(index); return new AliasFilter(ShardSearchRequest.parseAliasFilter(filterParser, indexMetaData, aliases), aliases); }
/** * Parses the template query replacing template parameters with provided * values. Handles both submitting the template as part of the request as * well as referencing only the template name. * * @param parseContext * parse context containing the templated query. */ @Override @Nullable public Query parse(QueryParseContext parseContext) throws IOException { XContentParser parser = parseContext.parser(); Template template = parse(parser, parseContext.parseFieldMatcher()); ExecutableScript executable = this.scriptService.executable(template, ScriptContext.Standard.SEARCH, SearchContext.current(), Collections.<String, String>emptyMap()); BytesReference querySource = (BytesReference) executable.run(); try (XContentParser qSourceParser = XContentFactory.xContent(querySource).createParser(querySource)) { final QueryParseContext context = new QueryParseContext(parseContext.index(), parseContext.indexQueryParserService()); context.reset(qSourceParser); return context.parseInnerQuery(); } }
/** * Parses a {@link RestRequest} body and returns a {@link MultiSearchRequest} */ public static MultiSearchRequest parseRequest(RestRequest restRequest, boolean allowExplicitIndex) throws IOException { MultiSearchRequest multiRequest = new MultiSearchRequest(); if (restRequest.hasParam("max_concurrent_searches")) { multiRequest.maxConcurrentSearchRequests(restRequest.paramAsInt("max_concurrent_searches", 0)); } parseMultiLineRequest(restRequest, multiRequest.indicesOptions(), allowExplicitIndex, (searchRequest, parser) -> { try { final QueryParseContext queryParseContext = new QueryParseContext(parser); searchRequest.source(SearchSourceBuilder.fromXContent(queryParseContext)); multiRequest.add(searchRequest); } catch (IOException e) { throw new ElasticsearchParseException("Exception when parsing search request", e); } }); return multiRequest; }
@Override public Query parse(QueryParseContext parseContext) throws IOException, QueryParsingException { XContentParser parser = parseContext.parser(); XContentParser.Token token = parser.nextToken(); if (token != XContentParser.Token.FIELD_NAME) { throw new QueryParsingException(parseContext, "[wrapper] query malformed"); } String fieldName = parser.currentName(); if (!fieldName.equals("query")) { throw new QueryParsingException(parseContext, "[wrapper] query malformed"); } parser.nextToken(); byte[] querySource = parser.binaryValue(); try (XContentParser qSourceParser = XContentFactory.xContent(querySource).createParser(querySource)) { final QueryParseContext context = new QueryParseContext(parseContext.index(), parseContext.indexQueryParserService()); context.reset(qSourceParser); Query result = context.parseInnerQuery(); parser.nextToken(); parseContext.combineNamedQueries(context); return result; } } }
QueryParseContext context = new QueryParseContext(requestContentParser); searchRequest.source().parseXContent(context);