Validate query api: move query parsing to the coordinating node#14384
Merged
javanna merged 1 commit intoelastic:masterfrom Nov 2, 2015
Merged
Conversation
Contributor
Author
|
@s1monw can you have a look please? |
Contributor
|
LGTM |
Similarly to what we did with the search api, we can now also move query parsing on the coordinating node for the validate query api. Given that the explain api is a single shard operation (compared to search which is instead a broadcast operation), this doesn't change a lot in how the api works internally. The main benefit is that we can simplify the java api by requiring a structured query object to be provided rather than a bytes array that will get parsed on the data node. Previously if you specified a QueryBuilder it would be serialized in json format and would get reparsed on the data node, while now it doesn't go through parsing anymore (as expected), given that after the query-refactoring we are able to properly stream queries natively. Note that the WrapperQueryBuilder can be used from the java api to provide a query as a string, in that case the actual parsing of the inner query will happen on the data node. Relates to elastic#10217 Closes elastic#14384
30f463b to
b56bbf6
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Similarly to what we did with the search api and the explain api we can now also move query parsing on the coordinating node for the validate query api. This makes it more realistic as query parsing happens now in the coordinating node rather than on the data nodes.
As a result, the java api only accepts the query in
QueryBuilderformat rather thanStringor bytes array. This is because the java api works now only with query objects that are already parsed. Note that if a query needs to be provided in string format through the java api this can be done usingWrapperQueryBuilderbut in that case the parsing of the wrapped query will happen on each data node instead.The response body returned in case the query parsing phase fails is slightly different compared to before: it will not contain any reference to an index nor shards header, as parsing is now independent from indices/shards.