[data.search.SearchSource] Remove legacy ES client APIs.#75943
[data.search.SearchSource] Remove legacy ES client APIs.#75943lukeelmers merged 22 commits intoelastic:masterfrom
Conversation
lizozom
left a comment
There was a problem hiding this comment.
Tested these changes with search and msearch and seems to be ok.
Couldn't manage to create a rollup, to make sure everything works there as well.
I think its worth testing the rollup + msearch combination at least once.
| let resolved = false; | ||
|
|
||
| const loadingCount$ = new BehaviorSubject(0); | ||
| http.addLoadingCountSource(loadingCount$); |
There was a problem hiding this comment.
I don't think you want to add a new BehaviorSubject for every msearch. Especially as there's no way to un-register them.
This should be managed at a higher level, passing in the loadingCount$ to be used.
There was a problem hiding this comment.
Moved loadingCount$ to search service
|
|
||
| // get shardTimeout | ||
| const config = await deps.globalConfig$.pipe(first()).toPromise(); | ||
| const { timeout } = getDefaultSearchParams(config); |
There was a problem hiding this comment.
The correct timeout to use for his request is requestTimeout, rather than shardTimeout.
This was an implementation fault in the old implementation.
There was a problem hiding this comment.
Hmm, I think timeout (which is the shard timeout) is the correct parameter here. It's the actual parameter being sent to ES. The requestTimeout should be automatically handled by the ES client.
There was a problem hiding this comment.
I guess we can handle it separately from this PR 👍
lukasolson
left a comment
There was a problem hiding this comment.
LGTM, minor comments below
src/plugins/data/public/search/legacy/default_search_strategy.ts
Outdated
Show resolved
Hide resolved
|
|
||
| // get shardTimeout | ||
| const config = await deps.globalConfig$.pipe(first()).toPromise(); | ||
| const { timeout } = getDefaultSearchParams(config); |
There was a problem hiding this comment.
Hmm, I think timeout (which is the shard timeout) is the correct parameter here. It's the actual parameter being sent to ES. The requestTimeout should be automatically handled by the ES client.
|
@elasticmachine merge upstream |
Thanks for the suggestion -- just tested this with rollups and I think there may be some issues -- Discover seems to work, however I'm not getting consistent aggregations in visualizations when toggling Let's hold on merging and I can look into those next week. |
|
@elasticmachine merge upstream |
There was a problem hiding this comment.
On a second look, I'm noticing that preference is considered to be required in the _msearch route, but in reality you can set courier:setRequestPreference to "none" and then it's expected that no preference is set. Currently, this breaks the route. You get this error:
[request body.searches.0.header.preference]: expected value of type [number] but got [undefined]
Also, it can be set to a string, not just a number.
|
@elasticmachine merge upstream |
|
@lukasolson I've fixed the error you caught & added some integration tests for it. As for rollups: I'm blocked trying to figure out what's wrong with creating rollup index patterns (currently broken on master). Until I can sort through that I won't be able to confirm that this PR works as expected with rollups. Will update here with any progress updates. |
I have a PR up which fixes the index patterns issue with rollups: #76593 After applying the change to this PR and testing, I can confirm that the behavior I'm seeing with this PR is also present on The "good" news is that I think it's safe to move forward with this PR once #76593 lands. The bad news is that we have another unrelated issue to sort out 🙁 |
|
@elasticmachine merge upstream |
|
@elasticmachine merge upstream |
💚 Build SucceededBuild metrics@kbn/optimizer bundle module count
async chunks size
page load bundle size
oss distributable file count
distributable file count
History
To update your PR or re-run it, just comment with: |
* master: (340 commits) [data.search.SearchSource] Remove legacy ES client APIs. (elastic#75943) [release notes] automatically retry on Github API 5xx errors (elastic#76447) [es_ui_shared] Fix eslint exhaustive deps rule (elastic#76392) [i18n] Integrate 7.9.1 Translations (elastic#76391) [APM] Update aggregations to support script sources (elastic#76429) [Security Solution] Refactor Network Top Countries to use Search Strategy (elastic#76244) Document security settings available on ESS (elastic#76513) [Ingest Manager] Add input revision to the config send to the agent (elastic#76327) [DOCS] Identifies cloud settings for Monitoring (elastic#76579) [DOCS] Identifies Cloud settings in Dev Tools (elastic#76583) [Ingest Manager] Better default value for fleet long polling timeout (elastic#76393) [data.indexPatterns] Fix broken rollup index pattern creation (elastic#76593) [Ingest Manager] Split Registry errors into Connection & Response (elastic#76558) [Security Solution] add an excess validation instead of the exact match (elastic#76472) Introduce TS incremental builds & move src/test_utils to TS project (elastic#76082) fix bad merge (elastic#76629) [Newsfeed] Ensure the version format when calling the API (elastic#76381) remove server_extensions mixin (elastic#76606) Remove legacy applications and legacy mode (elastic#75987) [Discover] Fix sidebar element focus behavior when adding / removing columns (elastic#75749) ...
…rok/new-patterns-component-use-array * 'master' of github.com:elastic/kibana: (75 commits) Remove legacy ui-apps-mixin (elastic#76604) remove unused test_utils (elastic#76528) [ML] Functional tests - add UI permission tests (elastic#76368) [APM] @ts-error -> @ts-expect-error (elastic#76492) [APM] Avoid negative offset for error marker on timeline (elastic#76638) [Reporting] rename interfaces to align with task manager integration (elastic#76716) Revert back ESO migration for alerting, added try/catch logic to avoid failing Kibana on start (elastic#76220) Test reverting "Add plugin status API (elastic#75819)" (elastic#76707) [Security Solution][Detections] Removes ML Job Settings SIEM copy and fixes link to ML app for creating custom jobs (elastic#76595) [Maps] remove region/coordinate-maps visualizations from sample data (elastic#76399) [DOCS] Dashboard-first docs refresh (elastic#76194) Updated ServiceNow description in docs and actions management UI to contains correct info (elastic#76344) [DOCS] Identifies cloud settings in reporting (elastic#76691) [Security Solution] Refactor timeline details to use search strategy (elastic#75591) es-archiver: Drop invalid index settings, support --query flag (elastic#76522) [DOCS] Identifies graph settings available on cloud (elastic#76661) Add more info about a11y tests (elastic#76045) [data.search.SearchSource] Remove legacy ES client APIs. (elastic#75943) [release notes] automatically retry on Github API 5xx errors (elastic#76447) [es_ui_shared] Fix eslint exhaustive deps rule (elastic#76392) ...
Part of #55139
Part of #65069
Relates to #75326
Summary
This PR removes the
__LEGACYAPIs from the client-side search service, thereby also removing our last dependency onelasticsearch-browser. A few things were needed to make this happen:/internal/_msearchendpoint has been created to replace the need for/elasticsearch/_msearch, which is still used a few places (including Index Patterns UI -- there's a separate task to track removal of that usage). This basically proxies requests directly to ES, however the request format is slightly different in that it accepts an array ofheader/bodyobjects to make it easier to inject some config onto each request on the server.__LEGACYAPIs are removed from the client-side search service.elasticsearch-browserI could find have been removed from the repo.This also moves forward the efforts to remove
esShardTimeoutfrom the client which were started in #75326, however at the moment it only removes usages from the high-level search service.Testing
You must enable the
courier:batchSearchesadvanced setting (disabled by default) to test this. Check places usingSearchSource, such as visualize, lens, maps, discover, dashboards.Checklist
For maintainers
Dev Docs
The
__LEGACYAPIs have been removed from thedataplugin's client-side search service. Specificallydata.search.__LEGACY.esClientis no longer exposed and the legacyelasticsearch-browserpackage has been removed from the repo. If you rely on this client in your plugin, we recommend migrating to the newelasticsearch-jsclient.