-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
Enable numeric sort optimization support for all numeric types #6424
Conversation
Signed-off-by: gashutos <gashutos@amazon.com>
Signed-off-by: gashutos <gashutos@amazon.com>
Gradle Check (Jenkins) Run Completed with:
|
Gradle Check (Jenkins) Run Completed with:
|
…ling Signed-off-by: gashutos <gashutos@amazon.com>
Gradle Check (Jenkins) Run Completed with:
|
Signed-off-by: gashutos <gashutos@amazon.com>
Gradle Check (Jenkins) Run Completed with:
|
I resolved the CHANGELOG conflict. Code LGTM, let's merge on green. |
Thanks @dblock ! |
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.
Looking good! Just a couple nits.
server/src/main/java/org/opensearch/action/search/SearchPhaseController.java
Outdated
Show resolved
Hide resolved
server/src/main/java/org/opensearch/search/sort/SortedWiderNumericSortField.java
Outdated
Show resolved
Hide resolved
.../src/main/java/org/opensearch/index/fielddata/fieldcomparator/IntValuesComparatorSource.java
Outdated
Show resolved
Hide resolved
Unrelated precommit failure:
Refired precommit job. |
Gradle Check (Jenkins) Run Completed with:
|
Signed-off-by: gashutos <gashutos@amazon.com>
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 once green! Nice work!
Awesome , thanks Nick ! |
Gradle Check (Jenkins) Run Completed with:
|
@gashutos watch the auto-backport (might need to be done manually if it fails) |
* Adding numeric optimization support for all numeric types Signed-off-by: gashutos <gashutos@amazon.com> * modifying CHANGELOG.md Signed-off-by: gashutos <gashutos@amazon.com> * Handling multi-cluster scenario where SortField serialization was failing Signed-off-by: gashutos <gashutos@amazon.com> * Fixing javadoc errors Signed-off-by: gashutos <gashutos@amazon.com> * Fixing nested sort integ tests Signed-off-by: gashutos <gashutos@amazon.com> * Stremlining behaviour of custom comparator tests too Signed-off-by: gashutos <gashutos@amazon.com> * Adding more integ tests for IntValuesComparatorSource & fixing few ITs Signed-off-by: gashutos <gashutos@amazon.com> * Fixing few more integ tests Signed-off-by: gashutos <gashutos@amazon.com> * Streamlining applySortWidening method with CreateSort and avoid modifying cteated objects of sort Signed-off-by: gashutos <gashutos@amazon.com> * Correcting licence header Signed-off-by: gashutos <gashutos@amazon.com> --------- Signed-off-by: gashutos <gashutos@amazon.com> Co-authored-by: Daniel (dB.) Doubrovkine <dblock@amazon.com> (cherry picked from commit e8425fc) Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
#6849) * Adding numeric optimization support for all numeric types * modifying CHANGELOG.md * Handling multi-cluster scenario where SortField serialization was failing * Fixing javadoc errors * Fixing nested sort integ tests * Stremlining behaviour of custom comparator tests too * Adding more integ tests for IntValuesComparatorSource & fixing few ITs * Fixing few more integ tests * Streamlining applySortWidening method with CreateSort and avoid modifying cteated objects of sort * Correcting licence header --------- (cherry picked from commit e8425fc) Signed-off-by: gashutos <gashutos@amazon.com> Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Daniel (dB.) Doubrovkine <dblock@amazon.com>
…earch-project#6424) * Adding numeric optimization support for all numeric types Signed-off-by: gashutos <gashutos@amazon.com> * modifying CHANGELOG.md Signed-off-by: gashutos <gashutos@amazon.com> * Handling multi-cluster scenario where SortField serialization was failing Signed-off-by: gashutos <gashutos@amazon.com> * Fixing javadoc errors Signed-off-by: gashutos <gashutos@amazon.com> * Fixing nested sort integ tests Signed-off-by: gashutos <gashutos@amazon.com> * Stremlining behaviour of custom comparator tests too Signed-off-by: gashutos <gashutos@amazon.com> * Adding more integ tests for IntValuesComparatorSource & fixing few ITs Signed-off-by: gashutos <gashutos@amazon.com> * Fixing few more integ tests Signed-off-by: gashutos <gashutos@amazon.com> * Streamlining applySortWidening method with CreateSort and avoid modifying cteated objects of sort Signed-off-by: gashutos <gashutos@amazon.com> * Correcting licence header Signed-off-by: gashutos <gashutos@amazon.com> --------- Signed-off-by: gashutos <gashutos@amazon.com> Co-authored-by: Daniel (dB.) Doubrovkine <dblock@amazon.com> Signed-off-by: Valentin Mitrofanov <mitrofmep@gmail.com>
Description
Enable sort optimization for all remaining Numeric types which were not covered in our last PR 6321
The main issue supporting these remaining NumericTypes was its merging capabilities during field mapping change for indices. That is resolved in this PR by introducing wider size comparator during merge.
Below remainig types were enabled as a part of this PR.
The performance gain we had with this is very huge, almost 10x gain on server side latency comparison. I have listed down few benchmarks in testing section.
Performance improvement
Below is server side latency comparison. Units are in ms.
Dataset as of now I have are smaller for float & short types, but improvement in 'x' wise is pretty wide.
http_logs is having largest ingested data, so latency we have there higher compare to other workload during sorting. But in case of relative latency w.r.t w/out sort optimization in 'x' multiple wise gives us similar improvement.
Issues Resolved
6326
Tested
Check List
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.