[JAY-732] Add bucket_selector aggregation to QueryBuilder #51
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.
Add support for the
bucket_selectorpipeline aggregation to the QueryBuilder DSL. This allows filtering buckets based on computed metrics.Example use case: group test executions by test name, compute total duration per test, and keep only tests that exceed a minimum total duration.
DSL usage:
Generated JSON:
{ "aggs": { "by_test": { "terms": { "field": "id_long" }, "aggs": { "total_duration_ms": { "sum": { "field": "duration_ms" } }, "only_slow_tests": { "bucket_selector": { "buckets_path": { "total": "total_duration_ms" }, "script": { "source": "params.total > params.min_duration", "lang": "painless", "params": { "min_duration": 60000 } } } } } } } }Motivation: Previously there was no way to filter aggregation buckets, forcing either client-side filtering or dropping to raw JSON. This feature enables pipeline filtering directly through the DSL.
Note: This Pull Request is a repost of #50 with some fixes to the code and added documentation.