From 6eb2636d21bf187b6cbcceb9a08767e19a318c57 Mon Sep 17 00:00:00 2001 From: Anton Dosov Date: Mon, 22 Feb 2021 15:52:49 +0100 Subject: [PATCH] [Search Sessions] Search session example app (#89583) (#92157) --- examples/search_examples/kibana.json | 4 +- .../search_examples/public/application.tsx | 67 +- .../public/common/example_page.tsx | 65 ++ .../search_examples/public/components/app.tsx | 459 ----------- examples/search_examples/public/plugin.ts | 27 +- .../search_examples/public/search/app.tsx | 433 ++++++++++ .../public/search_examples.png | Bin 0 -> 216829 bytes .../public/search_sessions/app.tsx | 768 ++++++++++++++++++ .../public/search_sessions/url_generator.ts | 92 +++ examples/search_examples/public/types.ts | 2 + .../data/public/query/query_service.ts | 6 +- .../url/kbn_url_storage.test.ts | 16 + .../state_management/url/kbn_url_storage.ts | 43 +- x-pack/plugins/data_enhanced/public/plugin.ts | 1 + ...onnected_search_session_indicator.test.tsx | 12 + .../connected_search_session_indicator.tsx | 6 +- 16 files changed, 1510 insertions(+), 491 deletions(-) create mode 100644 examples/search_examples/public/common/example_page.tsx delete mode 100644 examples/search_examples/public/components/app.tsx create mode 100644 examples/search_examples/public/search/app.tsx create mode 100644 examples/search_examples/public/search_examples.png create mode 100644 examples/search_examples/public/search_sessions/app.tsx create mode 100644 examples/search_examples/public/search_sessions/url_generator.ts diff --git a/examples/search_examples/kibana.json b/examples/search_examples/kibana.json index 07bb6a0b750e3..83996c2034381 100644 --- a/examples/search_examples/kibana.json +++ b/examples/search_examples/kibana.json @@ -4,7 +4,7 @@ "kibanaVersion": "kibana", "server": true, "ui": true, - "requiredPlugins": ["navigation", "data", "developerExamples", "kibanaUtils"], + "requiredPlugins": ["navigation", "data", "developerExamples", "kibanaUtils", "share"], "optionalPlugins": [], - "requiredBundles": [] + "requiredBundles": ["kibanaReact"] } diff --git a/examples/search_examples/public/application.tsx b/examples/search_examples/public/application.tsx index 7d3b585ba4852..1920cdbe5c697 100644 --- a/examples/search_examples/public/application.tsx +++ b/examples/search_examples/public/application.tsx @@ -8,26 +8,67 @@ import React from 'react'; import ReactDOM from 'react-dom'; +import { Router, Route, Redirect } from 'react-router-dom'; +import { I18nProvider } from '@kbn/i18n/react'; import { AppMountParameters, CoreStart } from '../../../src/core/public'; import { AppPluginStartDependencies } from './types'; -import { SearchExamplesApp } from './components/app'; +import { SearchExamplePage, ExampleLink } from './common/example_page'; +import { SearchExamplesApp } from './search/app'; +import { SearchSessionsExampleApp } from './search_sessions/app'; +import { RedirectAppLinks } from '../../../src/plugins/kibana_react/public'; + +const LINKS: ExampleLink[] = [ + { + path: '/search', + title: 'Search', + }, + { + path: '/search-sessions', + title: 'Search Sessions', + }, + { + path: 'https://github.com/elastic/kibana/blob/master/src/plugins/data/README.mdx', + title: 'README (GitHub)', + }, +]; export const renderApp = ( - { notifications, savedObjects, http }: CoreStart, - { navigation, data }: AppPluginStartDependencies, - { appBasePath, element }: AppMountParameters + { notifications, savedObjects, http, application }: CoreStart, + { data, navigation }: AppPluginStartDependencies, + { element, history }: AppMountParameters ) => { ReactDOM.render( - , + + + + + + + + + + + + + + + + + , element ); - return () => ReactDOM.unmountComponentAtNode(element); + return () => { + data.search.session.clear(); + ReactDOM.unmountComponentAtNode(element); + }; }; diff --git a/examples/search_examples/public/common/example_page.tsx b/examples/search_examples/public/common/example_page.tsx new file mode 100644 index 0000000000000..baa3a8ca6ef0a --- /dev/null +++ b/examples/search_examples/public/common/example_page.tsx @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { PropsWithChildren } from 'react'; +import { EuiPage, EuiPageSideBar, EuiSideNav } from '@elastic/eui'; +import { IBasePath } from 'kibana/public'; +import { PLUGIN_ID } from '../../common'; + +export interface ExampleLink { + title: string; + path: string; +} + +interface NavProps { + exampleLinks: ExampleLink[]; + basePath: IBasePath; +} + +const SideNav: React.FC = ({ exampleLinks, basePath }: NavProps) => { + const navItems = exampleLinks.map((example) => ({ + id: example.path, + name: example.title, + 'data-test-subj': example.path, + href: example.path.startsWith('http') + ? example.path + : basePath.prepend(`/app/${PLUGIN_ID}${example.path}`), + })); + + return ( + + ); +}; + +interface Props { + exampleLinks: ExampleLink[]; + basePath: IBasePath; +} + +export const SearchExamplePage: React.FC = ({ + children, + exampleLinks, + basePath, +}: PropsWithChildren) => { + return ( + + + + + {children} + + ); +}; diff --git a/examples/search_examples/public/components/app.tsx b/examples/search_examples/public/components/app.tsx deleted file mode 100644 index bed2dea596cae..0000000000000 --- a/examples/search_examples/public/components/app.tsx +++ /dev/null @@ -1,459 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useState, useEffect } from 'react'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; -import { BrowserRouter as Router } from 'react-router-dom'; - -import { - EuiButtonEmpty, - EuiCodeBlock, - EuiPage, - EuiPageBody, - EuiPageContent, - EuiPageContentBody, - EuiPageHeader, - EuiTitle, - EuiText, - EuiFlexGrid, - EuiFlexGroup, - EuiFlexItem, - EuiCheckbox, - EuiSpacer, - EuiCode, - EuiComboBox, - EuiFormLabel, -} from '@elastic/eui'; - -import { CoreStart } from '../../../../src/core/public'; -import { mountReactNode } from '../../../../src/core/public/utils'; -import { NavigationPublicPluginStart } from '../../../../src/plugins/navigation/public'; - -import { - PLUGIN_ID, - PLUGIN_NAME, - IMyStrategyResponse, - SERVER_SEARCH_ROUTE_PATH, -} from '../../common'; - -import { - DataPublicPluginStart, - IndexPattern, - IndexPatternField, - isCompleteResponse, - isErrorResponse, -} from '../../../../src/plugins/data/public'; - -interface SearchExamplesAppDeps { - basename: string; - notifications: CoreStart['notifications']; - http: CoreStart['http']; - savedObjectsClient: CoreStart['savedObjects']['client']; - navigation: NavigationPublicPluginStart; - data: DataPublicPluginStart; -} - -function getNumeric(fields?: IndexPatternField[]) { - if (!fields) return []; - return fields?.filter((f) => f.type === 'number' && f.aggregatable); -} - -function formatFieldToComboBox(field?: IndexPatternField | null) { - if (!field) return []; - return formatFieldsToComboBox([field]); -} - -function formatFieldsToComboBox(fields?: IndexPatternField[]) { - if (!fields) return []; - - return fields?.map((field) => { - return { - label: field.displayName || field.name, - }; - }); -} - -export const SearchExamplesApp = ({ - http, - basename, - notifications, - savedObjectsClient, - navigation, - data, -}: SearchExamplesAppDeps) => { - const { IndexPatternSelect } = data.ui; - const [getCool, setGetCool] = useState(false); - const [timeTook, setTimeTook] = useState(); - const [indexPattern, setIndexPattern] = useState(); - const [fields, setFields] = useState(); - const [selectedFields, setSelectedFields] = useState([]); - const [selectedNumericField, setSelectedNumericField] = useState< - IndexPatternField | null | undefined - >(); - const [request, setRequest] = useState>({}); - const [response, setResponse] = useState>({}); - - // Fetch the default index pattern using the `data.indexPatterns` service, as the component is mounted. - useEffect(() => { - const setDefaultIndexPattern = async () => { - const defaultIndexPattern = await data.indexPatterns.getDefault(); - setIndexPattern(defaultIndexPattern); - }; - - setDefaultIndexPattern(); - }, [data]); - - // Update the fields list every time the index pattern is modified. - useEffect(() => { - setFields(indexPattern?.fields); - }, [indexPattern]); - useEffect(() => { - setSelectedNumericField(fields?.length ? getNumeric(fields)[0] : null); - }, [fields]); - - const doAsyncSearch = async (strategy?: string) => { - if (!indexPattern || !selectedNumericField) return; - - // Constuct the query portion of the search request - const query = data.query.getEsQuery(indexPattern); - - // Constuct the aggregations portion of the search request by using the `data.search.aggs` service. - const aggs = [{ type: 'avg', params: { field: selectedNumericField!.name } }]; - const aggsDsl = data.search.aggs.createAggConfigs(indexPattern, aggs).toDsl(); - - const req = { - params: { - index: indexPattern.title, - body: { - aggs: aggsDsl, - query, - }, - }, - // Add a custom request parameter to be consumed by `MyStrategy`. - ...(strategy ? { get_cool: getCool } : {}), - }; - - // Submit the search request using the `data.search` service. - setRequest(req.params.body); - const searchSubscription$ = data.search - .search(req, { - strategy, - }) - .subscribe({ - next: (res) => { - if (isCompleteResponse(res)) { - setResponse(res.rawResponse); - setTimeTook(res.rawResponse.took); - const avgResult: number | undefined = res.rawResponse.aggregations - ? res.rawResponse.aggregations[1].value - : undefined; - const message = ( - - Searched {res.rawResponse.hits.total} documents.
- The average of {selectedNumericField!.name} is{' '} - {avgResult ? Math.floor(avgResult) : 0}. -
- Is it Cool? {String((res as IMyStrategyResponse).cool)} -
- ); - notifications.toasts.addSuccess({ - title: 'Query result', - text: mountReactNode(message), - }); - searchSubscription$.unsubscribe(); - } else if (isErrorResponse(res)) { - // TODO: Make response error status clearer - notifications.toasts.addWarning('An error has occurred'); - searchSubscription$.unsubscribe(); - } - }, - error: () => { - notifications.toasts.addDanger('Failed to run search'); - }, - }); - }; - - const doSearchSourceSearch = async () => { - if (!indexPattern) return; - - const query = data.query.queryString.getQuery(); - const filters = data.query.filterManager.getFilters(); - const timefilter = data.query.timefilter.timefilter.createFilter(indexPattern); - if (timefilter) { - filters.push(timefilter); - } - - try { - const searchSource = await data.search.searchSource.create(); - - searchSource - .setField('index', indexPattern) - .setField('filter', filters) - .setField('query', query) - .setField('fields', selectedFields.length ? selectedFields.map((f) => f.name) : ['*']); - - if (selectedNumericField) { - searchSource.setField('aggs', () => { - return data.search.aggs - .createAggConfigs(indexPattern, [ - { type: 'avg', params: { field: selectedNumericField.name } }, - ]) - .toDsl(); - }); - } - - setRequest(await searchSource.getSearchRequestBody()); - const res = await searchSource.fetch(); - setResponse(res); - - const message = Searched {res.hits.total} documents.; - notifications.toasts.addSuccess({ - title: 'Query result', - text: mountReactNode(message), - }); - } catch (e) { - setResponse(e.body); - notifications.toasts.addWarning(`An error has occurred: ${e.message}`); - } - }; - - const onClickHandler = () => { - doAsyncSearch(); - }; - - const onMyStrategyClickHandler = () => { - doAsyncSearch('myStrategy'); - }; - - const onServerClickHandler = async () => { - if (!indexPattern || !selectedNumericField) return; - try { - const res = await http.get(SERVER_SEARCH_ROUTE_PATH, { - query: { - index: indexPattern.title, - field: selectedNumericField!.name, - }, - }); - - notifications.toasts.addSuccess(`Server returned ${JSON.stringify(res)}`); - } catch (e) { - notifications.toasts.addDanger('Failed to run search'); - } - }; - - const onSearchSourceClickHandler = () => { - doSearchSourceSearch(); - }; - - return ( - - - <> - - - - - -

- -

-
-
- - - - - - - - Index Pattern - { - const newIndexPattern = await data.indexPatterns.get( - newIndexPatternId - ); - setIndexPattern(newIndexPattern); - }} - isClearable={false} - /> - - - Numeric Field to Aggregate - { - const fld = indexPattern?.getFieldByName(option[0].label); - setSelectedNumericField(fld || null); - }} - sortMatchesBy="startsWith" - /> - - - - - - Fields to query (leave blank to include all fields) - - { - const flds = option - .map((opt) => indexPattern?.getFieldByName(opt?.label)) - .filter((f) => f); - setSelectedFields(flds.length ? (flds as IndexPatternField[]) : []); - }} - sortMatchesBy="startsWith" - /> - - - - - -

- Searching Elasticsearch using data.search -

-
- - If you want to fetch data from Elasticsearch, you can use the different - services provided by the data plugin. These help you get - the index pattern and search bar configuration, format them into a DSL query - and send it to Elasticsearch. - - - - - - - - - - -

Writing a custom search strategy

-
- - If you want to do some pre or post processing on the server, you might want - to create a custom search strategy. This example uses such a strategy, - passing in custom input and receiving custom output back. - - - } - checked={getCool} - onChange={(event) => setGetCool(event.target.checked)} - /> - - - - - - -

Using search on the server

-
- - You can also run your search request from the server, without registering a - search strategy. This request does not take the configuration of{' '} - TopNavMenu into account, but you could pass those down to - the server as well. - - - - - -
- - -

Request

-
- Search body sent to ES - - {JSON.stringify(request, null, 2)} - -
- - -

Response

-
- - - - - {JSON.stringify(response, null, 2)} - -
-
-
-
-
-
- -
-
- ); -}; diff --git a/examples/search_examples/public/plugin.ts b/examples/search_examples/public/plugin.ts index 495e5b2571a0b..87992e5493f0e 100644 --- a/examples/search_examples/public/plugin.ts +++ b/examples/search_examples/public/plugin.ts @@ -19,7 +19,9 @@ import { AppPluginSetupDependencies, AppPluginStartDependencies, } from './types'; +import { createSearchSessionsExampleUrlGenerator } from './search_sessions/url_generator'; import { PLUGIN_NAME } from '../common'; +import img from './search_examples.png'; export class SearchExamplesPlugin implements @@ -31,14 +33,14 @@ export class SearchExamplesPlugin > { public setup( core: CoreSetup, - { developerExamples }: AppPluginSetupDependencies + { developerExamples, share }: AppPluginSetupDependencies ): SearchExamplesPluginSetup { // Register an application into the side navigation menu core.application.register({ id: 'searchExamples', title: PLUGIN_NAME, navLinkStatus: AppNavLinkStatus.hidden, - async mount(params: AppMountParameters) { + mount: async (params: AppMountParameters) => { // Load application bundle const { renderApp } = await import('./application'); // Get start services as specified in kibana.json @@ -51,9 +53,28 @@ export class SearchExamplesPlugin developerExamples.register({ appId: 'searchExamples', title: 'Search Examples', - description: `Search Examples`, + description: `Examples on searching elasticsearch using data plugin: low-level search client (data.search.search), high-level search client (SearchSource), search sessions (data.search.sessions)`, + image: img, + links: [ + { + label: 'README', + href: 'https://github.com/elastic/kibana/tree/master/src/plugins/data/README.mdx', + iconType: 'logoGithub', + target: '_blank', + size: 's', + }, + ], }); + // we need an URL generator for search session examples for restoring a search session + share.urlGenerators.registerUrlGenerator( + createSearchSessionsExampleUrlGenerator(() => { + return core + .getStartServices() + .then(([coreStart]) => ({ appBasePath: coreStart.http.basePath.get() })); + }) + ); + return {}; } diff --git a/examples/search_examples/public/search/app.tsx b/examples/search_examples/public/search/app.tsx new file mode 100644 index 0000000000000..09966b958aff6 --- /dev/null +++ b/examples/search_examples/public/search/app.tsx @@ -0,0 +1,433 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useState, useEffect } from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; + +import { + EuiButtonEmpty, + EuiCodeBlock, + EuiPageBody, + EuiPageContent, + EuiPageContentBody, + EuiPageHeader, + EuiTitle, + EuiText, + EuiFlexGrid, + EuiFlexGroup, + EuiFlexItem, + EuiCheckbox, + EuiSpacer, + EuiCode, + EuiComboBox, + EuiFormLabel, +} from '@elastic/eui'; + +import { CoreStart } from '../../../../src/core/public'; +import { mountReactNode } from '../../../../src/core/public/utils'; +import { NavigationPublicPluginStart } from '../../../../src/plugins/navigation/public'; + +import { + PLUGIN_ID, + PLUGIN_NAME, + IMyStrategyResponse, + SERVER_SEARCH_ROUTE_PATH, +} from '../../common'; + +import { + DataPublicPluginStart, + IndexPattern, + IndexPatternField, + isCompleteResponse, + isErrorResponse, +} from '../../../../src/plugins/data/public'; + +interface SearchExamplesAppDeps { + notifications: CoreStart['notifications']; + http: CoreStart['http']; + navigation: NavigationPublicPluginStart; + data: DataPublicPluginStart; +} + +function getNumeric(fields?: IndexPatternField[]) { + if (!fields) return []; + return fields?.filter((f) => f.type === 'number' && f.aggregatable); +} + +function formatFieldToComboBox(field?: IndexPatternField | null) { + if (!field) return []; + return formatFieldsToComboBox([field]); +} + +function formatFieldsToComboBox(fields?: IndexPatternField[]) { + if (!fields) return []; + + return fields?.map((field) => { + return { + label: field.displayName || field.name, + }; + }); +} + +export const SearchExamplesApp = ({ + http, + notifications, + navigation, + data, +}: SearchExamplesAppDeps) => { + const { IndexPatternSelect } = data.ui; + const [getCool, setGetCool] = useState(false); + const [timeTook, setTimeTook] = useState(); + const [indexPattern, setIndexPattern] = useState(); + const [fields, setFields] = useState(); + const [selectedFields, setSelectedFields] = useState([]); + const [selectedNumericField, setSelectedNumericField] = useState< + IndexPatternField | null | undefined + >(); + const [request, setRequest] = useState>({}); + const [response, setResponse] = useState>({}); + + // Fetch the default index pattern using the `data.indexPatterns` service, as the component is mounted. + useEffect(() => { + const setDefaultIndexPattern = async () => { + const defaultIndexPattern = await data.indexPatterns.getDefault(); + setIndexPattern(defaultIndexPattern); + }; + + setDefaultIndexPattern(); + }, [data]); + + // Update the fields list every time the index pattern is modified. + useEffect(() => { + setFields(indexPattern?.fields); + }, [indexPattern]); + useEffect(() => { + setSelectedNumericField(fields?.length ? getNumeric(fields)[0] : null); + }, [fields]); + + const doAsyncSearch = async (strategy?: string) => { + if (!indexPattern || !selectedNumericField) return; + + // Construct the query portion of the search request + const query = data.query.getEsQuery(indexPattern); + + // Construct the aggregations portion of the search request by using the `data.search.aggs` service. + const aggs = [{ type: 'avg', params: { field: selectedNumericField!.name } }]; + const aggsDsl = data.search.aggs.createAggConfigs(indexPattern, aggs).toDsl(); + + const req = { + params: { + index: indexPattern.title, + body: { + aggs: aggsDsl, + query, + }, + }, + // Add a custom request parameter to be consumed by `MyStrategy`. + ...(strategy ? { get_cool: getCool } : {}), + }; + + // Submit the search request using the `data.search` service. + setRequest(req.params.body); + const searchSubscription$ = data.search + .search(req, { + strategy, + }) + .subscribe({ + next: (res) => { + if (isCompleteResponse(res)) { + setResponse(res.rawResponse); + setTimeTook(res.rawResponse.took); + const avgResult: number | undefined = res.rawResponse.aggregations + ? res.rawResponse.aggregations[1].value + : undefined; + const message = ( + + Searched {res.rawResponse.hits.total} documents.
+ The average of {selectedNumericField!.name} is{' '} + {avgResult ? Math.floor(avgResult) : 0}. +
+ Is it Cool? {String((res as IMyStrategyResponse).cool)} +
+ ); + notifications.toasts.addSuccess({ + title: 'Query result', + text: mountReactNode(message), + }); + searchSubscription$.unsubscribe(); + } else if (isErrorResponse(res)) { + // TODO: Make response error status clearer + notifications.toasts.addWarning('An error has occurred'); + searchSubscription$.unsubscribe(); + } + }, + error: () => { + notifications.toasts.addDanger('Failed to run search'); + }, + }); + }; + + const doSearchSourceSearch = async () => { + if (!indexPattern) return; + + const query = data.query.queryString.getQuery(); + const filters = data.query.filterManager.getFilters(); + const timefilter = data.query.timefilter.timefilter.createFilter(indexPattern); + if (timefilter) { + filters.push(timefilter); + } + + try { + const searchSource = await data.search.searchSource.create(); + + searchSource + .setField('index', indexPattern) + .setField('filter', filters) + .setField('query', query) + .setField('fields', selectedFields.length ? selectedFields.map((f) => f.name) : ['*']); + + if (selectedNumericField) { + searchSource.setField('aggs', () => { + return data.search.aggs + .createAggConfigs(indexPattern, [ + { type: 'avg', params: { field: selectedNumericField.name } }, + ]) + .toDsl(); + }); + } + + setRequest(await searchSource.getSearchRequestBody()); + const res = await searchSource.fetch(); + setResponse(res); + + const message = Searched {res.hits.total} documents.; + notifications.toasts.addSuccess({ + title: 'Query result', + text: mountReactNode(message), + }); + } catch (e) { + setResponse(e.body); + notifications.toasts.addWarning(`An error has occurred: ${e.message}`); + } + }; + + const onClickHandler = () => { + doAsyncSearch(); + }; + + const onMyStrategyClickHandler = () => { + doAsyncSearch('myStrategy'); + }; + + const onServerClickHandler = async () => { + if (!indexPattern || !selectedNumericField) return; + try { + const res = await http.get(SERVER_SEARCH_ROUTE_PATH, { + query: { + index: indexPattern.title, + field: selectedNumericField!.name, + }, + }); + + notifications.toasts.addSuccess(`Server returned ${JSON.stringify(res)}`); + } catch (e) { + notifications.toasts.addDanger('Failed to run search'); + } + }; + + const onSearchSourceClickHandler = () => { + doSearchSourceSearch(); + }; + + return ( + + + +

+ +

+
+
+ + + + + + + + + Index Pattern + { + const newIndexPattern = await data.indexPatterns.get(newIndexPatternId); + setIndexPattern(newIndexPattern); + }} + isClearable={false} + /> + + + Numeric Field to Aggregate + { + const fld = indexPattern?.getFieldByName(option[0].label); + setSelectedNumericField(fld || null); + }} + sortMatchesBy="startsWith" + /> + + + + + Fields to query (leave blank to include all fields) + { + const flds = option + .map((opt) => indexPattern?.getFieldByName(opt?.label)) + .filter((f) => f); + setSelectedFields(flds.length ? (flds as IndexPatternField[]) : []); + }} + sortMatchesBy="startsWith" + /> + + + + + +

+ Searching Elasticsearch using data.search +

+
+ + If you want to fetch data from Elasticsearch, you can use the different services + provided by the data plugin. These help you get the index pattern + and search bar configuration, format them into a DSL query and send it to + Elasticsearch. + + + + + + + + + + +

Writing a custom search strategy

+
+ + If you want to do some pre or post processing on the server, you might want to + create a custom search strategy. This example uses such a strategy, passing in + custom input and receiving custom output back. + + + } + checked={getCool} + onChange={(event) => setGetCool(event.target.checked)} + /> + + + + + + +

Using search on the server

+
+ + You can also run your search request from the server, without registering a search + strategy. This request does not take the configuration of{' '} + TopNavMenu into account, but you could pass those down to the + server as well. + + + + + +
+ + +

Request

+
+ Search body sent to ES + + {JSON.stringify(request, null, 2)} + +
+ + +

Response

+
+ + + + + {JSON.stringify(response, null, 2)} + +
+
+
+
+
+ ); +}; diff --git a/examples/search_examples/public/search_examples.png b/examples/search_examples/public/search_examples.png new file mode 100644 index 0000000000000000000000000000000000000000..f17827a5bf4681ea021a777cca660699844881df GIT binary patch literal 216829 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
&QFVMQeoDQk04Ol2tr-oSK{J>186A3q}w_dFm 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

D=PUQ?SH_&KaPU6SHz67z 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

hbv$Y`#2a0zXP?XTLw5jy#se|o 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

q6!x>SHX5 zK_#Z>D9=F$B=2o8ez$Brbhm+4aPRvA%m3O0ar`eM{pcCswQ1RkMW2#y?5;h z77$i$$9((YY0?m&5ZSXu(}+Qkpsbb7|Dka`^unn*Vgm%KW;& Z0B;Z~vQi_S&j8?0N?cy7Qba%C{{YAz$F~3g literal 0 HcmV?d00001 diff --git a/examples/search_examples/public/search_sessions/app.tsx b/examples/search_examples/public/search_sessions/app.tsx new file mode 100644 index 0000000000000..3c9d38776dfdf --- /dev/null +++ b/examples/search_examples/public/search_sessions/app.tsx @@ -0,0 +1,768 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import useObservable from 'react-use/lib/useObservable'; +import { + EuiAccordion, + EuiButtonEmpty, + EuiCallOut, + EuiCode, + EuiCodeBlock, + EuiComboBox, + EuiFlexGroup, + EuiFlexItem, + EuiFormLabel, + EuiLoadingSpinner, + EuiPageBody, + EuiPageContent, + EuiPageContentBody, + EuiPageHeader, + EuiPageHeaderSection, + EuiSpacer, + EuiText, + EuiTitle, +} from '@elastic/eui'; +import { catchError, map, tap } from 'rxjs/operators'; +import { of } from 'rxjs'; + +import { CoreStart } from '../../../../src/core/public'; +import { mountReactNode } from '../../../../src/core/public/utils'; +import { NavigationPublicPluginStart } from '../../../../src/plugins/navigation/public'; + +import { PLUGIN_ID } from '../../common'; + +import { + connectToQueryState, + DataPublicPluginStart, + IEsSearchRequest, + IEsSearchResponse, + IndexPattern, + IndexPatternField, + isCompleteResponse, + isErrorResponse, + QueryState, + SearchSessionState, + TimeRange, +} from '../../../../src/plugins/data/public'; +import { + createStateContainer, + useContainerState, +} from '../../../../src/plugins/kibana_utils/public'; +import { + getInitialStateFromUrl, + SEARCH_SESSIONS_EXAMPLES_APP_URL_GENERATOR, + SearchSessionExamplesUrlGeneratorState, +} from './url_generator'; + +interface SearchSessionsExampleAppDeps { + notifications: CoreStart['notifications']; + navigation: NavigationPublicPluginStart; + data: DataPublicPluginStart; +} + +/** + * This example is an app with a step by step guide + * walking through search session lifecycle + * These enum represents all important steps in this demo + */ +enum DemoStep { + ConfigureQuery, + RunSession, + SaveSession, + RestoreSessionOnScreen, + RestoreSessionViaManagement, +} + +interface State extends QueryState { + indexPatternId?: string; + numericFieldName?: string; + + /** + * If landed into the app with restore URL + */ + restoreSessionId?: string; +} + +export const SearchSessionsExampleApp = ({ + notifications, + navigation, + data, +}: SearchSessionsExampleAppDeps) => { + const { IndexPatternSelect } = data.ui; + + const [isSearching, setIsSearching] = useState(false); + const [request, setRequest] = useState(null); + const [response, setResponse] = useState(null); + const [tookMs, setTookMs] = useState(null); + const nextRequestIdRef = useRef(0); + + const [restoreRequest, setRestoreRequest] = useState(null); + const [restoreResponse, setRestoreResponse] = useState(null); + const [restoreTookMs, setRestoreTookMs] = useState(null); + + const sessionState = useObservable(data.search.session.state$) || SearchSessionState.None; + + const demoStep: DemoStep = (() => { + switch (sessionState) { + case SearchSessionState.None: + case SearchSessionState.Canceled: + return DemoStep.ConfigureQuery; + case SearchSessionState.Loading: + case SearchSessionState.Completed: + return DemoStep.RunSession; + case SearchSessionState.BackgroundCompleted: + case SearchSessionState.BackgroundLoading: + return DemoStep.SaveSession; + case SearchSessionState.Restored: + return DemoStep.RestoreSessionOnScreen; + } + })(); + + const { + numericFieldName, + indexPattern, + selectedField, + fields, + setIndexPattern, + setNumericFieldName, + state, + } = useAppState({ data }); + + const isRestoring = !!state.restoreSessionId; + + const enableSessionStorage = useCallback(() => { + data.search.session.enableStorage({ + getName: async () => 'Search sessions example', + getUrlGeneratorData: async () => ({ + initialState: { + time: data.query.timefilter.timefilter.getTime(), + filters: data.query.filterManager.getFilters(), + query: data.query.queryString.getQuery(), + indexPatternId: indexPattern?.id, + numericFieldName, + } as SearchSessionExamplesUrlGeneratorState, + restoreState: { + time: data.query.timefilter.timefilter.getAbsoluteTime(), + filters: data.query.filterManager.getFilters(), + query: data.query.queryString.getQuery(), + indexPatternId: indexPattern?.id, + numericFieldName, + searchSessionId: data.search.session.getSessionId(), + } as SearchSessionExamplesUrlGeneratorState, + urlGeneratorId: SEARCH_SESSIONS_EXAMPLES_APP_URL_GENERATOR, + }), + }); + }, [ + data.query.filterManager, + data.query.queryString, + data.query.timefilter.timefilter, + data.search.session, + indexPattern?.id, + numericFieldName, + ]); + + const reset = useCallback(() => { + setRequest(null); + setResponse(null); + setRestoreRequest(null); + setRestoreResponse(null); + setTookMs(null); + setRestoreTookMs(null); + setIsSearching(false); + data.search.session.clear(); + enableSessionStorage(); + nextRequestIdRef.current = 0; + }, [ + setRequest, + setResponse, + setRestoreRequest, + setRestoreResponse, + setIsSearching, + data.search.session, + enableSessionStorage, + ]); + + useEffect(() => { + enableSessionStorage(); + return () => { + data.search.session.clear(); + }; + }, [data.search.session, enableSessionStorage]); + + useEffect(() => { + reset(); + }, [reset, state]); + + const search = useCallback( + (restoreSearchSessionId?: string) => { + if (!indexPattern) return; + if (!numericFieldName) return; + setIsSearching(true); + const requestId = ++nextRequestIdRef.current; + doSearch({ indexPattern, numericFieldName, restoreSearchSessionId }, { data, notifications }) + .then(({ response: res, request: req, tookMs: _tookMs }) => { + if (requestId !== nextRequestIdRef.current) return; // no longer interested in this result + if (restoreSearchSessionId) { + setRestoreRequest(req); + setRestoreResponse(res); + setRestoreTookMs(_tookMs ?? null); + } else { + setRequest(req); + setResponse(res); + setTookMs(_tookMs ?? null); + } + }) + .finally(() => { + if (requestId !== nextRequestIdRef.current) return; // no longer interested in this result + setIsSearching(false); + }); + }, + [data, notifications, indexPattern, numericFieldName] + ); + + useEffect(() => { + if (state.restoreSessionId) { + search(state.restoreSessionId); + } + }, [search, state.restoreSessionId]); + + return ( + + + + +

Search session example

+ + + {!isShardDelayEnabled(data) && ( + <> + + + + )} + +

+ This example shows how you can use data.search.session service to + group your searches into a search session and allow user to save search results for + later.
+ Start a long-running search, save the session and then restore it. See how fast search + is completed when restoring the session comparing to when doing initial search.
+
+ Follow this demo step-by-step:{' '} + configure the query, start the search and then save your session. You can save + your session both when search is still in progress or when it is completed. After you + save the session and when initial search is completed you can{' '} + restore the session: the search will re-run reusing previous results. It will + finish a lot faster then the initial search. You can also{' '} + go to search sessions management and get back to the stored results from + there. +

+
+ + + + + {!isRestoring && ( + <> + +

1. Configure the search query (OK to leave defaults)

+
+ + + + Index Pattern + { + if (!id) return; + setIndexPattern(id); + }} + isClearable={false} + /> + + + Numeric Field to Aggregate + { + const fld = indexPattern?.getFieldByName(option[0].label); + if (!fld) return; + setNumericFieldName(fld?.name); + }} + sortMatchesBy="startsWith" + /> + + + + +

+ 2. Start the search using data.search service +

+
+ + In this example each search creates a new session by calling{' '} + data.search.session.start() that returns a{' '} + searchSessionId. Then this searchSessionId is + passed into a search request. + +
+ {demoStep === DemoStep.ConfigureQuery && ( + search()} + iconType="play" + disabled={isSearching} + > + Start the search from low-level client (data.search.search) + + )} + {isSearching && } + + {response && request && ( + + )} +
+
+ + {(demoStep === DemoStep.RunSession || + demoStep === DemoStep.RestoreSessionOnScreen || + demoStep === DemoStep.SaveSession) && ( + <> + +

3. Save your session

+
+ + Use the search session indicator in the Kibana header to save the search + session. +
+ { + // hack for demo purposes: + document + .querySelector('[data-test-subj="searchSessionIndicator"]') + ?.querySelector('button') + ?.click(); + }} + isDisabled={ + demoStep === DemoStep.RestoreSessionOnScreen || + demoStep === DemoStep.SaveSession + } + > + Try saving the session using the search session indicator in the header. + +
+
+ + )} + {(demoStep === DemoStep.RestoreSessionOnScreen || + demoStep === DemoStep.SaveSession) && ( + <> + + +

4. Restore the session

+
+ + Now you can restore your saved session. The same search request completes + significantly faster because it reuses stored results. + +
+ {!isSearching && !restoreResponse && ( + { + search(data.search.session.getSessionId()); + }} + > + Restore the search session + + )} + {isSearching && } + + {restoreRequest && restoreResponse && ( + + )} +
+
+ + )} + {demoStep === DemoStep.RestoreSessionOnScreen && ( + <> + + +

5. Restore from Management

+
+ + You can also get back to your session from the Search Session Management. +
+ { + // hack for demo purposes: + document + .querySelector('[data-test-subj="searchSessionIndicator"]') + ?.querySelector('button') + ?.click(); + }} + > + Use Search Session indicator to navigate to management + +
+
+ + )} + + )} + {isRestoring && ( + <> + +

You restored the search session!

+
+ + + {isSearching && } + + {restoreRequest && restoreResponse && ( + + )} + + + )} + + { + // hack to quickly reset all the state and remove state stuff from the URL + window.location.assign(window.location.href.split('?')[0]); + }} + > + Start again + +
+
+ + ); +}; + +function SearchInspector({ + accordionId, + response, + request, + tookMs, +}: { + accordionId: string; + response: IEsSearchResponse; + request: IEsSearchRequest; + tookMs: number | null; +}) { + return ( +
+ The search took: {tookMs ? Math.round(tookMs) : 'unknown'}ms + + + + +

Request

+
+ Search body sent to ES + + {JSON.stringify(request, null, 2)} + +
+ + +

Response

+
+ + {JSON.stringify(response, null, 2)} + +
+
+
+
+ ); +} + +function useAppState({ data }: { data: DataPublicPluginStart }) { + const stateContainer = useMemo(() => { + const { + filters, + time, + searchSessionId, + numericFieldName, + indexPatternId, + query, + } = getInitialStateFromUrl(); + + if (filters) { + data.query.filterManager.setFilters(filters); + } + + if (query) { + data.query.queryString.setQuery(query); + } + + if (time) { + data.query.timefilter.timefilter.setTime(time); + } + + return createStateContainer({ + restoreSessionId: searchSessionId, + numericFieldName, + indexPatternId, + }); + }, [data.query.filterManager, data.query.queryString, data.query.timefilter.timefilter]); + const setState = useCallback( + (state: Partial) => stateContainer.set({ ...stateContainer.get(), ...state }), + [stateContainer] + ); + const state = useContainerState(stateContainer); + useEffect(() => { + return connectToQueryState(data.query, stateContainer, { + time: true, + query: true, + filters: true, + refreshInterval: false, + }); + }, [stateContainer, data.query]); + + const [fields, setFields] = useState(); + const [indexPattern, setIndexPattern] = useState(); + + // Fetch the default index pattern using the `data.indexPatterns` service, as the component is mounted. + useEffect(() => { + let canceled = false; + const loadIndexPattern = async () => { + const loadedIndexPattern = state.indexPatternId + ? await data.indexPatterns.get(state.indexPatternId) + : await data.indexPatterns.getDefault(); + if (canceled) return; + if (!loadedIndexPattern) return; + if (!state.indexPatternId) { + setState({ + indexPatternId: loadedIndexPattern.id, + }); + } + + setIndexPattern(loadedIndexPattern); + }; + + loadIndexPattern(); + return () => { + canceled = true; + }; + }, [data, setState, state.indexPatternId]); + + // Update the fields list every time the index pattern is modified. + useEffect(() => { + setFields(indexPattern?.fields); + }, [indexPattern]); + useEffect(() => { + if (state.numericFieldName) return; + setState({ numericFieldName: fields?.length ? getNumeric(fields)[0]?.name : undefined }); + }, [setState, fields, state.numericFieldName]); + + const selectedField: IndexPatternField | undefined = useMemo( + () => indexPattern?.fields.find((field) => field.name === state.numericFieldName), + [indexPattern?.fields, state.numericFieldName] + ); + + return { + selectedField, + indexPattern, + numericFieldName: state.numericFieldName, + fields, + setNumericFieldName: (field: string) => setState({ numericFieldName: field }), + setIndexPattern: (indexPatternId: string) => setState({ indexPatternId }), + state, + }; +} + +function doSearch( + { + indexPattern, + numericFieldName, + restoreSearchSessionId, + }: { + indexPattern: IndexPattern; + numericFieldName: string; + restoreSearchSessionId?: string; + }, + { + data, + notifications, + }: { data: DataPublicPluginStart; notifications: CoreStart['notifications'] } +): Promise<{ request: IEsSearchRequest; response: IEsSearchResponse; tookMs?: number }> { + if (!indexPattern) return Promise.reject('Select an index patten'); + if (!numericFieldName) return Promise.reject('Select a field to aggregate on'); + + // start a new session or restore an existing one + let restoreTimeRange: TimeRange | undefined; + if (restoreSearchSessionId) { + // when restoring need to make sure we are forcing absolute time range + restoreTimeRange = data.query.timefilter.timefilter.getAbsoluteTime(); + data.search.session.restore(restoreSearchSessionId); + } + const sessionId = restoreSearchSessionId ? restoreSearchSessionId : data.search.session.start(); + + // Construct the query portion of the search request + const query = data.query.getEsQuery(indexPattern, restoreTimeRange); + + // Construct the aggregations portion of the search request by using the `data.search.aggs` service. + + const aggs = isShardDelayEnabled(data) + ? [ + { type: 'avg', params: { field: numericFieldName } }, + { type: 'shard_delay', params: { delay: '5s' } }, + ] + : [{ type: 'avg', params: { field: numericFieldName } }]; + + const aggsDsl = data.search.aggs.createAggConfigs(indexPattern, aggs).toDsl(); + + const req = { + params: { + index: indexPattern.title, + body: { + aggs: aggsDsl, + query, + }, + }, + }; + + const startTs = performance.now(); + + // Submit the search request using the `data.search` service. + return data.search + .search(req, { sessionId }) + .pipe( + tap((res) => { + if (isCompleteResponse(res)) { + const avgResult: number | undefined = res.rawResponse.aggregations + ? res.rawResponse.aggregations[1]?.value ?? res.rawResponse.aggregations[2]?.value + : undefined; + const message = ( + + Searched {res.rawResponse.hits.total} documents.
+ The average of {numericFieldName} is {avgResult ? Math.floor(avgResult) : 0} + . +
+
+ ); + notifications.toasts.addSuccess({ + title: 'Query result', + text: mountReactNode(message), + }); + } else if (isErrorResponse(res)) { + notifications.toasts.addWarning('An error has occurred'); + } + }), + map((res) => ({ response: res, request: req, tookMs: performance.now() - startTs })), + catchError((e) => { + notifications.toasts.addDanger('Failed to run search'); + return of({ request: req, response: e }); + }) + ) + .toPromise(); +} + +function getNumeric(fields?: IndexPatternField[]) { + if (!fields) return []; + return fields?.filter((f) => f.type === 'number' && f.aggregatable); +} + +function formatFieldToComboBox(field?: IndexPatternField | null) { + if (!field) return []; + return formatFieldsToComboBox([field]); +} + +function formatFieldsToComboBox(fields?: IndexPatternField[]) { + if (!fields) return []; + + return fields?.map((field) => { + return { + label: field.displayName || field.name, + }; + }); +} + +/** + * To make this demo more convincing it uses `shardDelay` agg which adds artificial delay to a search request, + * to enable `shardDelay` make sure to set `data.search.aggs.shardDelay.enabled: true` in your kibana.dev.yml + */ +function isShardDelayEnabled(data: DataPublicPluginStart): boolean { + try { + return !!data.search.aggs.types.get('shard_delay'); + } catch (e) { + return false; + } +} + +function NoShardDelayCallout() { + return ( + + shardDelay is missing! + + } + color="warning" + iconType="help" + > +

+ This demo works best with shardDelay aggregation which simulates slow + queries.
+ We recommend to enable it in your kibana.dev.yml: +

+ data.search.aggs.shardDelay.enabled: true +
+ ); +} diff --git a/examples/search_examples/public/search_sessions/url_generator.ts b/examples/search_examples/public/search_sessions/url_generator.ts new file mode 100644 index 0000000000000..69355f9046c46 --- /dev/null +++ b/examples/search_examples/public/search_sessions/url_generator.ts @@ -0,0 +1,92 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { TimeRange, Filter, Query, esFilters } from '../../../../src/plugins/data/public'; +import { getStatesFromKbnUrl, setStateToKbnUrl } from '../../../../src/plugins/kibana_utils/public'; +import { UrlGeneratorsDefinition } from '../../../../src/plugins/share/public'; + +export const STATE_STORAGE_KEY = '_a'; +export const GLOBAL_STATE_STORAGE_KEY = '_g'; + +export const SEARCH_SESSIONS_EXAMPLES_APP_URL_GENERATOR = + 'SEARCH_SESSIONS_EXAMPLES_APP_URL_GENERATOR'; + +export interface AppUrlState { + filters?: Filter[]; + query?: Query; + indexPatternId?: string; + numericFieldName?: string; + searchSessionId?: string; +} + +export interface GlobalUrlState { + filters?: Filter[]; + time?: TimeRange; +} + +export type SearchSessionExamplesUrlGeneratorState = AppUrlState & GlobalUrlState; + +export const createSearchSessionsExampleUrlGenerator = ( + getStartServices: () => Promise<{ + appBasePath: string; + }> +): UrlGeneratorsDefinition => ({ + id: SEARCH_SESSIONS_EXAMPLES_APP_URL_GENERATOR, + createUrl: async (state: SearchSessionExamplesUrlGeneratorState) => { + const startServices = await getStartServices(); + const appBasePath = startServices.appBasePath; + const path = `${appBasePath}/app/searchExamples/search-sessions`; + + let url = setStateToKbnUrl( + STATE_STORAGE_KEY, + { + query: state.query, + filters: state.filters?.filter((f) => !esFilters.isFilterPinned(f)), + indexPatternId: state.indexPatternId, + numericFieldName: state.numericFieldName, + searchSessionId: state.searchSessionId, + } as AppUrlState, + { useHash: false, storeInHashQuery: false }, + path + ); + + url = setStateToKbnUrl( + GLOBAL_STATE_STORAGE_KEY, + { + time: state.time, + filters: state.filters?.filter((f) => esFilters.isFilterPinned(f)), + } as GlobalUrlState, + { useHash: false, storeInHashQuery: false }, + url + ); + + return url; + }, +}); + +export function getInitialStateFromUrl(): SearchSessionExamplesUrlGeneratorState { + const { + _a: { numericFieldName, indexPatternId, searchSessionId, filters: aFilters, query } = {}, + _g: { filters: gFilters, time } = {}, + } = getStatesFromKbnUrl<{ _a: AppUrlState; _g: GlobalUrlState }>( + window.location.href, + ['_a', '_g'], + { + getFromHashQuery: false, + } + ); + + return { + numericFieldName, + searchSessionId, + time, + filters: [...(gFilters ?? []), ...(aFilters ?? [])], + indexPatternId, + query, + }; +} diff --git a/examples/search_examples/public/types.ts b/examples/search_examples/public/types.ts index f2e0fe0958971..fd3b869af3fe3 100644 --- a/examples/search_examples/public/types.ts +++ b/examples/search_examples/public/types.ts @@ -9,6 +9,7 @@ import { NavigationPublicPluginStart } from '../../../src/plugins/navigation/public'; import { DataPublicPluginStart } from '../../../src/plugins/data/public'; import { DeveloperExamplesSetup } from '../../developer_examples/public'; +import { SharePluginSetup } from '../../../src/plugins/share/public'; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface SearchExamplesPluginSetup {} @@ -17,6 +18,7 @@ export interface SearchExamplesPluginStart {} export interface AppPluginSetupDependencies { developerExamples: DeveloperExamplesSetup; + share: SharePluginSetup; } export interface AppPluginStartDependencies { diff --git a/src/plugins/data/public/query/query_service.ts b/src/plugins/data/public/query/query_service.ts index 9aaedf12ce55e..3e86c6aa01fd9 100644 --- a/src/plugins/data/public/query/query_service.ts +++ b/src/plugins/data/public/query/query_service.ts @@ -15,7 +15,7 @@ import { TimefilterService, TimefilterSetup } from './timefilter'; import { createSavedQueryService } from './saved_query/saved_query_service'; import { createQueryStateObservable } from './state_sync/create_global_query_observable'; import { QueryStringManager, QueryStringContract } from './query_string'; -import { buildEsQuery, getEsQueryConfig } from '../../common'; +import { buildEsQuery, getEsQueryConfig, TimeRange } from '../../common'; import { getUiSettings } from '../services'; import { NowProviderInternalContract } from '../now_provider'; import { IndexPattern } from '..'; @@ -80,8 +80,8 @@ export class QueryService { savedQueries: createSavedQueryService(savedObjectsClient), state$: this.state$, timefilter: this.timefilter, - getEsQuery: (indexPattern: IndexPattern) => { - const timeFilter = this.timefilter.timefilter.createFilter(indexPattern); + getEsQuery: (indexPattern: IndexPattern, timeRange?: TimeRange) => { + const timeFilter = this.timefilter.timefilter.createFilter(indexPattern, timeRange); return buildEsQuery( indexPattern, diff --git a/src/plugins/kibana_utils/public/state_management/url/kbn_url_storage.test.ts b/src/plugins/kibana_utils/public/state_management/url/kbn_url_storage.test.ts index 92f2f053336eb..32704af6213b8 100644 --- a/src/plugins/kibana_utils/public/state_management/url/kbn_url_storage.test.ts +++ b/src/plugins/kibana_utils/public/state_management/url/kbn_url_storage.test.ts @@ -53,6 +53,22 @@ describe('kbn_url_storage', () => { expect(retrievedState2).toEqual(state2); }); + it('should set expanded state to url before hash', () => { + let newUrl = setStateToKbnUrl('_s', state1, { useHash: false, storeInHashQuery: false }, url); + expect(newUrl).toMatchInlineSnapshot( + `"http://localhost:5601/oxf/app/kibana?_s=(testArray:!(1,2,()),testNull:!n,testNumber:0,testObj:(test:'123'),testStr:'123')#/yourApp"` + ); + const retrievedState1 = getStateFromKbnUrl('_s', newUrl, { getFromHashQuery: false }); + expect(retrievedState1).toEqual(state1); + + newUrl = setStateToKbnUrl('_s', state2, { useHash: false, storeInHashQuery: false }, newUrl); + expect(newUrl).toMatchInlineSnapshot( + `"http://localhost:5601/oxf/app/kibana?_s=(test:'123')#/yourApp"` + ); + const retrievedState2 = getStateFromKbnUrl('_s', newUrl, { getFromHashQuery: false }); + expect(retrievedState2).toEqual(state2); + }); + it('should set hashed state to url', () => { let newUrl = setStateToKbnUrl('_s', state1, { useHash: true }, url); expect(newUrl).toMatchInlineSnapshot( diff --git a/src/plugins/kibana_utils/public/state_management/url/kbn_url_storage.ts b/src/plugins/kibana_utils/public/state_management/url/kbn_url_storage.ts index cdbea44985d97..99e3023cae033 100644 --- a/src/plugins/kibana_utils/public/state_management/url/kbn_url_storage.ts +++ b/src/plugins/kibana_utils/public/state_management/url/kbn_url_storage.ts @@ -15,7 +15,7 @@ import { replaceUrlHashQuery, replaceUrlQuery } from './format'; import { url as urlUtils } from '../../../common'; /** - * Parses a kibana url and retrieves all the states encoded into url, + * Parses a kibana url and retrieves all the states encoded into the URL, * Handles both expanded rison state and hashed state (where the actual state stored in sessionStorage) * e.g.: * @@ -23,22 +23,31 @@ import { url as urlUtils } from '../../../common'; * http://localhost:5601/oxf/app/kibana#/yourApp?_a=(tab:indexedFields)&_b=(f:test,i:'',l:'') * will return object: * {_a: {tab: 'indexedFields'}, _b: {f: 'test', i: '', l: ''}}; + * + * + * By default due to Kibana legacy reasons assumed that state is stored in a query inside a hash part of the URL: + * http://localhost:5601/oxf/app/kibana#/yourApp?_a={STATE} + * + * { getFromHashQuery: false } option should be used in case state is stored in a main query (not in a hash): + * http://localhost:5601/oxf/app/kibana?_a={STATE}#/yourApp + * */ -export function getStatesFromKbnUrl( +export function getStatesFromKbnUrl>( url: string = window.location.href, - keys?: string[] -): Record { - const query = parseUrlHash(url)?.query; + keys?: Array, + { getFromHashQuery = true }: { getFromHashQuery: boolean } = { getFromHashQuery: true } +): State { + const query = getFromHashQuery ? parseUrlHash(url)?.query : parseUrl(url).query; - if (!query) return {}; + if (!query) return {} as State; const decoded: Record = {}; Object.entries(query) - .filter(([key]) => (keys ? keys.includes(key) : true)) + .filter(([key]) => (keys ? keys.includes(key as keyof State) : true)) .forEach(([q, value]) => { decoded[q] = decodeState(value as string); }); - return decoded; + return decoded as State; } /** @@ -50,12 +59,20 @@ export function getStatesFromKbnUrl( * and key '_a' * will return object: * {tab: 'indexedFields'} + * + * + * By default due to Kibana legacy reasons assumed that state is stored in a query inside a hash part of the URL: + * http://localhost:5601/oxf/app/kibana#/yourApp?_a={STATE} + * + * { getFromHashQuery: false } option should be used in case state is stored in a main query (not in a hash): + * http://localhost:5601/oxf/app/kibana?_a={STATE}#/yourApp */ export function getStateFromKbnUrl( key: string, - url: string = window.location.href + url: string = window.location.href, + { getFromHashQuery = true }: { getFromHashQuery: boolean } = { getFromHashQuery: true } ): State | null { - return (getStatesFromKbnUrl(url, [key])[key] as State) || null; + return (getStatesFromKbnUrl(url, [key], { getFromHashQuery })[key] as State) || null; } /** @@ -69,6 +86,12 @@ export function getStateFromKbnUrl( * * will return url: * http://localhost:5601/oxf/app/kibana#/yourApp?_a=(tab:other)&_b=(f:test,i:'',l:'') + * + * By default due to Kibana legacy reasons assumed that state is stored in a query inside a hash part of the URL: + * http://localhost:5601/oxf/app/kibana#/yourApp?_a={STATE} + * + * { storeInHashQuery: false } option should be used in you want to store you state in a main query (not in a hash): + * http://localhost:5601/oxf/app/kibana?_a={STATE}#/yourApp */ export function setStateToKbnUrl( key: string, diff --git a/x-pack/plugins/data_enhanced/public/plugin.ts b/x-pack/plugins/data_enhanced/public/plugin.ts index 29f3494433bef..056135b34cf9f 100644 --- a/x-pack/plugins/data_enhanced/public/plugin.ts +++ b/x-pack/plugins/data_enhanced/public/plugin.ts @@ -92,6 +92,7 @@ export class DataEnhancedPlugin createConnectedSearchSessionIndicator({ sessionService: plugins.data.search.session, application: core.application, + basePath: core.http.basePath, timeFilter: plugins.data.query.timefilter.timefilter, storage: this.storage, disableSaveAfterSessionCompletesTimeout: moment diff --git a/x-pack/plugins/data_enhanced/public/search/ui/connected_search_session_indicator/connected_search_session_indicator.test.tsx b/x-pack/plugins/data_enhanced/public/search/ui/connected_search_session_indicator/connected_search_session_indicator.test.tsx index 0aef27310e090..c96d821641dd6 100644 --- a/x-pack/plugins/data_enhanced/public/search/ui/connected_search_session_indicator/connected_search_session_indicator.test.tsx +++ b/x-pack/plugins/data_enhanced/public/search/ui/connected_search_session_indicator/connected_search_session_indicator.test.tsx @@ -27,6 +27,7 @@ import { createSearchUsageCollectorMock } from '../../../../../../../src/plugins const coreStart = coreMock.createStart(); const application = coreStart.application; +const basePath = coreStart.http.basePath; const dataStart = dataPluginMock.createStartContract(); const sessionService = dataStart.search.session as jest.Mocked; let storage: Storage; @@ -63,6 +64,7 @@ test("shouldn't show indicator in case no active search session", async () => { storage, disableSaveAfterSessionCompletesTimeout, usageCollector, + basePath, }); const { getByTestId, container } = render( @@ -91,6 +93,7 @@ test("shouldn't show indicator in case app hasn't opt-in", async () => { storage, disableSaveAfterSessionCompletesTimeout, usageCollector, + basePath, }); const { getByTestId, container } = render( @@ -121,6 +124,7 @@ test('should show indicator in case there is an active search session', async () storage, disableSaveAfterSessionCompletesTimeout, usageCollector, + basePath, }); const { getByTestId } = render( @@ -146,6 +150,7 @@ test('should be disabled in case uiConfig says so ', async () => { storage, disableSaveAfterSessionCompletesTimeout, usageCollector, + basePath, }); render( @@ -169,6 +174,7 @@ test('should be disabled in case not enough permissions', async () => { timeFilter, storage, disableSaveAfterSessionCompletesTimeout, + basePath, }); render( @@ -195,6 +201,7 @@ test('should be disabled during auto-refresh', async () => { storage, disableSaveAfterSessionCompletesTimeout, usageCollector, + basePath, }); render( @@ -233,6 +240,7 @@ describe('Completed inactivity', () => { storage, disableSaveAfterSessionCompletesTimeout, usageCollector, + basePath, }); render( @@ -294,6 +302,7 @@ describe('tour steps', () => { storage, disableSaveAfterSessionCompletesTimeout, usageCollector, + basePath, }); const rendered = render( @@ -335,6 +344,7 @@ describe('tour steps', () => { storage, disableSaveAfterSessionCompletesTimeout, usageCollector, + basePath, }); const rendered = render( @@ -370,6 +380,7 @@ describe('tour steps', () => { storage, disableSaveAfterSessionCompletesTimeout, usageCollector, + basePath, }); const rendered = render( @@ -397,6 +408,7 @@ describe('tour steps', () => { storage, disableSaveAfterSessionCompletesTimeout, usageCollector, + basePath, }); const rendered = render( diff --git a/x-pack/plugins/data_enhanced/public/search/ui/connected_search_session_indicator/connected_search_session_indicator.tsx b/x-pack/plugins/data_enhanced/public/search/ui/connected_search_session_indicator/connected_search_session_indicator.tsx index 7c70a270bd30a..7e2c9c063daa4 100644 --- a/x-pack/plugins/data_enhanced/public/search/ui/connected_search_session_indicator/connected_search_session_indicator.tsx +++ b/x-pack/plugins/data_enhanced/public/search/ui/connected_search_session_indicator/connected_search_session_indicator.tsx @@ -18,7 +18,7 @@ import { SearchUsageCollector, } from '../../../../../../../src/plugins/data/public'; import { RedirectAppLinks } from '../../../../../../../src/plugins/kibana_react/public'; -import { ApplicationStart } from '../../../../../../../src/core/public'; +import { ApplicationStart, IBasePath } from '../../../../../../../src/core/public'; import { IStorageWrapper } from '../../../../../../../src/plugins/kibana_utils/public'; import { useSearchSessionTour } from './search_session_tour'; @@ -26,6 +26,7 @@ export interface SearchSessionIndicatorDeps { sessionService: ISessionService; timeFilter: TimefilterContract; application: ApplicationStart; + basePath: IBasePath; storage: IStorageWrapper; /** * Controls for how long we allow to save a session, @@ -42,7 +43,9 @@ export const createConnectedSearchSessionIndicator = ({ storage, disableSaveAfterSessionCompletesTimeout, usageCollector, + basePath, }: SearchSessionIndicatorDeps): React.FC => { + const searchSessionsManagementUrl = basePath.prepend('/app/management/kibana/search_sessions'); const isAutoRefreshEnabled = () => !timeFilter.getRefreshInterval().pause; const isAutoRefreshEnabled$ = timeFilter .getRefreshIntervalUpdate$() @@ -185,6 +188,7 @@ export const createConnectedSearchSessionIndicator = ({ onCancel={onCancel} onOpened={onOpened} onViewSearchSessions={onViewSearchSessions} + viewSearchSessionsLink={searchSessionsManagementUrl} /> );