-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
[Partial Results] Move other bucket into Search Source #96384
Conversation
…tor-integration-in-search-source
…tor-integration-in-search-source
@elasticmachine merge upstream |
merge conflict between base and head |
if (responseAgg[aggWithOtherBucket.id]) { | ||
return responseAgg[aggWithOtherBucket.id].buckets; | ||
if (responseAgg?.[aggWithOtherBucket.id]) { | ||
return (responseAgg[aggWithOtherBucket.id] as any).buckets; |
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.
Introduced response typing, but I don't want to broaden the refactoring of this code
ts improvements more inspector tests
more tests
@elasticmachine merge upstream |
@lizozom can you add a screenshot of the resulting UI? It will help with the quick design review, thanks. |
@ryankeairns I don't think this deserves a review honestly. |
@elasticmachine merge upstream |
…into search/move-other-bucket
* Move inspector adapter integration into search source * docs and ts * Move other bucket to search source * test ts + delete unused tabilfy function * hierarchical param in aggconfig. ts improvements more inspector tests * fix jest * separate inspect more tests * jest * inspector * Error handling and more tests * put the fun in functional tests * code review * Add functional test for other bucket in search example app * test * test * ts * test * test * ts Co-authored-by: Kibana Machine <[email protected]>
💚 Backport successful
This backport PR will be merged automatically after passing CI. |
* Move inspector adapter integration into search source * docs and ts * Move other bucket to search source * test ts + delete unused tabilfy function * hierarchical param in aggconfig. ts improvements more inspector tests * fix jest * separate inspect more tests * jest * inspector * Error handling and more tests * put the fun in functional tests * code review * Add functional test for other bucket in search example app * test * test * ts * test * test * ts Co-authored-by: Kibana Machine <[email protected]> Co-authored-by: Liza Katz <[email protected]>
💚 Build SucceededMetrics [docs]Async chunks
Page load bundle
Unknown metric groupsAPI count
API count missing comments
API count with any type
History
To update your PR or re-run it, just comment with: cc @lizozom |
…te-legacy-es-client * 'master' of github.com:elastic/kibana: (102 commits) [Exploratory view] integerate page views to exploratory view (elastic#97258) Fix typo in license_api_guard README name and import http server mocks from public interface (elastic#97334) Avoid mutating KQL query when validating it (elastic#97081) Add description as title on tag badge (elastic#97109) Remove legacy ES client usages in `home` and `xpack_legacy` (elastic#97359) [Fleet] Finer-grained error information from install/upgrade API (elastic#95649) Rule registry bundle size (elastic#97251) [Partial Results] Move other bucket into Search Source (elastic#96384) [Dashboard] Makes lens default editor for creating new panels (elastic#96181) skip flaky suite (elastic#97387) [Asset Management] Agent picker follow up (elastic#97357) skip flaky suite (elastic#97382) [Security Solutions] Fixes flake with cypress tests (elastic#97329) skip flaky suite (elastic#97355) Skip test to try and stabilize master minimize number of so fild asserted in tests. it creates flakines when implementation details change (elastic#97374) [Search Sessions] Client side search cache (elastic#92439) [SavedObjects] Add aggregations support (elastic#96292) [Reporting] Remove legacy elasticsearch client usage from the reporting plugin (elastic#97184) [kbnClient] fix basePath handling and export reponse type (elastic#97277) ... # Conflicts: # x-pack/plugins/watcher/server/lib/license_pre_routing_factory/license_pre_routing_factory.ts # x-pack/plugins/watcher/server/plugin.ts # x-pack/plugins/watcher/server/routes/api/indices/register_get_route.ts # x-pack/plugins/watcher/server/routes/api/license/register_refresh_route.ts # x-pack/plugins/watcher/server/routes/api/register_list_fields_route.ts # x-pack/plugins/watcher/server/routes/api/register_load_history_route.ts # x-pack/plugins/watcher/server/routes/api/settings/register_load_route.ts # x-pack/plugins/watcher/server/routes/api/watch/action/register_acknowledge_route.ts # x-pack/plugins/watcher/server/routes/api/watch/register_activate_route.ts # x-pack/plugins/watcher/server/routes/api/watch/register_deactivate_route.ts # x-pack/plugins/watcher/server/routes/api/watch/register_delete_route.ts # x-pack/plugins/watcher/server/routes/api/watch/register_execute_route.ts # x-pack/plugins/watcher/server/routes/api/watch/register_history_route.ts # x-pack/plugins/watcher/server/routes/api/watch/register_load_route.ts # x-pack/plugins/watcher/server/routes/api/watch/register_save_route.ts # x-pack/plugins/watcher/server/routes/api/watch/register_visualize_route.ts # x-pack/plugins/watcher/server/routes/api/watches/register_delete_route.ts # x-pack/plugins/watcher/server/routes/api/watches/register_list_route.ts # x-pack/plugins/watcher/server/shared_imports.ts # x-pack/plugins/watcher/server/types.ts
Summary
Depends on #96241
When an aggregation has an
other
bucket, one or morepost flight requests
are needed to construct it.Previously, that logic was part of the request handler code, making it available to
expressions
, but not to direct consumers ofSearchSource
.This PR:
AggConfigs
object intosearchSource.setField('aggs', ...)
.aggConfigs.toDsl
hierarchical
option toAggConfigs
, replacing the previous parameterpostFlightRequests
into search source.Response
The search observable returned from
searchSource.fetch$()
generally emits one or more responses (all but the last one being partial results). If theAggConfigs
passed to thesearchSource
generatepostFlightRequests
, thesearchSource
will emit an additional single response (even if it required multiple calls), with the other bucket fully populated.Release Note
Adds Other Bucket support to
SearchSource
, by passing in anAggConfigs
object directly tosearchSource.setField('aggs', aggs)
.The search observable returned from
searchSource.fetch$()
will emit one or more responses (all but the last one being partial results). If theAggConfigs
passed to thesearchSource
generatepostFlightRequests
, thesearchSource
will emit an additional single response (even if it required multiple calls), with the other bucket fully populated.Tests
These changes effect any consumers of
SearchSource
, with or without theOther
bucket, i.e. apps like Dashboard, Visualizations, Lens and Maps. Consumers of the lower leveldata.search
API should not be effected by this PR.Special attention should be given to testing the
Other
bucket,hierarchical
parameter (formerly known asmetricsAtAllLevels
) and the behavior of theinspector
in the above scenarios.Unit tests
_terms_other_bucket_helper.test.ts
'setField(aggs)'
- adjust aggs type'calls searchSource.fetch'
- adjust inspector format'calls agg.postFlightRequest if it exiests and agg is enabled'
'should skip agg.postFlightRequest call if the agg is disabled'
tabifies response data
- removedmetricsAtAllLevels
isPartial
andisRunning
in response mockaggs
required adjustmentsfetch$
instead of deprecatedfetch
sets the value for the property with AggConfigs
fetch$
shareReplays result
should emit error on empty response
inspector
calls inspector if provided
calls inspector only once, with multiple subs (shareReplay)
calls error on inspector
postFlightRequest
doesnt call any post flight requests if disabled
doesnt call any post flight if searchsource has error
calls post flight requests, fires 1 extra response, returns last response
calls post flight requests, handles error
hierarchical: true
Functional tests
other
bucket in the final response.Checklist
Delete any items that are not applicable to this PR.
For maintainers