-
Notifications
You must be signed in to change notification settings - Fork 24.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Don't index ranges including NOW in percolator #52748
Merged
romseygeek
merged 3 commits into
elastic:master
from
romseygeek:bug/percolator-constant-score
Feb 25, 2020
Merged
Don't index ranges including NOW in percolator #52748
romseygeek
merged 3 commits into
elastic:master
from
romseygeek:bug/percolator-constant-score
Feb 25, 2020
Conversation
This file contains 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
romseygeek
added
>bug
:Search Relevance/Percolator
Reverse search: find queries that match a document
v8.0.0
v7.7.0
labels
Feb 25, 2020
Pinging @elastic/es-search (:Search/Percolator) |
martijnvg
approved these changes
Feb 25, 2020
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 LGTM.
Date ranges based on current time are tricky to handle and
this isn't the first time bugs are reported about it. The approach
in this pr is easier to reason about it.
romseygeek
added a commit
that referenced
this pull request
Feb 25, 2020
Currently, date ranges queries using NOW-based date math are rewritten to MatchAllDocs queries when being preprocessed for the percolator. However, since we added the verification step, this can result in incorrect matches when percolator queries are run without scores. This commit changes things to instead wrap date queries that use NOW with a new DateRangeIncludingNowQuery. This is a simple wrapper query that returns its delegate at rewrite time, but it can be detected by the percolator QueryAnalyzer and be dealt with accordingly. This also allows us to remove a method on QueryRewriteContext, and push all logic relating to NOW-based ranges into the DateFieldMapper. Fixes #52617
This was referenced Feb 25, 2020
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
>bug
:Search Relevance/Percolator
Reverse search: find queries that match a document
v7.7.0
v8.0.0-alpha1
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.
Currently, date ranges queries using
NOW
-based date math are rewritten toMatchAllDocs
queries when being preprocessed for the percolator. However,since we added the verification step, this can result in incorrect matches when
percolator queries are run without scores. This commit changes things to instead
wrap date queries that use
NOW
with a newDateRangeIncludingNowQuery
.This is a simple wrapper query that returns its delegate at rewrite time, but it can
be detected by the percolator
QueryAnalyzer
and be dealt with accordingly.This also allows us to remove a method on
QueryRewriteContext
, and push alllogic relating to
NOW
-based ranges into theDateFieldMapper
.Fixes #52617