From 63dfc7ddf061a03b8aebe04fb3c72bda2e0e0846 Mon Sep 17 00:00:00 2001 From: Saarika Bhasi <55930906+saarikabhasi@users.noreply.github.com> Date: Fri, 3 May 2024 13:08:32 -0400 Subject: [PATCH] [Serverless Search] Improve awareness on using pipelines (#182177) ## Summary - Adds a section for `Preprocessing data ` - [x] home page - [x] new connector ->connect to index tab - Remove `Transform and enrich your data` from home page ### Screen Recording https://github.com/elastic/kibana/assets/55930906/47820f68-a726-4ad5-83ab-2fabcb899c91 ### Checklist Delete any items that are not applicable to this PR. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- packages/kbn-doc-links/src/get_doc_links.ts | 5 + .../components/preprocess_data.tsx | 245 ++++++++++++++++++ packages/kbn-search-api-panels/index.tsx | 1 + packages/kbn-search-api-panels/tsconfig.json | 3 +- .../serverless_search/common/doc_links.ts | 18 +- .../connector_config/connector_index_name.tsx | 61 ++++- .../application/components/overview.test.tsx | 8 +- .../application/components/overview.tsx | 102 ++++---- .../components/pipeline_manage_button.tsx | 34 +++ .../public/application/constants.ts | 1 + .../public/assets/array_handling.svg | 11 + .../public/assets/cluster.svg | 4 - .../serverless_search/public/assets/cut.svg | 11 - .../public/assets/data_enrichment.svg | 4 + .../public/assets/data_filtering.svg | 4 + .../public/assets/data_transformation.svg | 11 + .../public/assets/enrichment.svg | 6 + .../public/assets/pipeline_handling.svg | 4 + .../public/assets/reporter.svg | 11 - .../translations/translations/fr-FR.json | 3 - .../translations/translations/ja-JP.json | 3 - .../translations/translations/zh-CN.json | 3 - .../page_objects/svl_search_landing_page.ts | 8 +- .../test_suites/search/landing_page.ts | 11 +- 24 files changed, 483 insertions(+), 89 deletions(-) create mode 100644 packages/kbn-search-api-panels/components/preprocess_data.tsx create mode 100644 x-pack/plugins/serverless_search/public/application/components/pipeline_manage_button.tsx create mode 100644 x-pack/plugins/serverless_search/public/assets/array_handling.svg delete mode 100644 x-pack/plugins/serverless_search/public/assets/cluster.svg delete mode 100644 x-pack/plugins/serverless_search/public/assets/cut.svg create mode 100644 x-pack/plugins/serverless_search/public/assets/data_enrichment.svg create mode 100644 x-pack/plugins/serverless_search/public/assets/data_filtering.svg create mode 100644 x-pack/plugins/serverless_search/public/assets/data_transformation.svg create mode 100644 x-pack/plugins/serverless_search/public/assets/enrichment.svg create mode 100644 x-pack/plugins/serverless_search/public/assets/pipeline_handling.svg delete mode 100644 x-pack/plugins/serverless_search/public/assets/reporter.svg diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index 689f8a5e9859e..f42bd3b688e4e 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -791,6 +791,11 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D csvPipelines: `${ELASTIC_WEBSITE_URL}guide/en/ecs/${ECS_VERSION}/ecs-converting.html`, pipelineFailure: `${ELASTICSEARCH_DOCS}ingest.html#handling-pipeline-failures`, processors: `${ELASTICSEARCH_DOCS}processors.html`, + arrayOrJson: `${ELASTICSEARCH_DOCS}processors.html#ingest-process-category-array-json-handling`, + dataEnrichment: `${ELASTICSEARCH_DOCS}processors.html#ingest-process-category-data-enrichment`, + dataFiltering: `${ELASTICSEARCH_DOCS}processors.html#ingest-process-category-data-filtering`, + dataTransformation: `${ELASTICSEARCH_DOCS}processors.html#ingest-process-category-data-transformation`, + pipelineHandling: `${ELASTICSEARCH_DOCS}processors.html#ingest-process-category-pipeline-handling`, remove: `${ELASTICSEARCH_DOCS}remove-processor.html`, rename: `${ELASTICSEARCH_DOCS}rename-processor.html`, script: `${ELASTICSEARCH_DOCS}script-processor.html`, diff --git a/packages/kbn-search-api-panels/components/preprocess_data.tsx b/packages/kbn-search-api-panels/components/preprocess_data.tsx new file mode 100644 index 0000000000000..d1c10c5218ba1 --- /dev/null +++ b/packages/kbn-search-api-panels/components/preprocess_data.tsx @@ -0,0 +1,245 @@ +/* + * 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 { + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiText, + EuiThemeProvider, + EuiTitle, + EuiPanel, + EuiLink, + EuiFlexGrid, + EuiImage, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { euiThemeVars } from '@kbn/ui-theme'; +import React from 'react'; + +export const PreprocessDataPanel: React.FC<{ + docLinks: { + arrayOrJson: string; + dataEnrichment: string; + dataFiltering: string; + dataTransformation: string; + pipelineHandling: string; + }; + images: { + dataEnrichment: string; + dataTransformation: string; + dataFiltering: string; + pipelineHandling: string; + arrayHandling: string; + }; +}> = ({ docLinks, images }) => { + const color = euiThemeVars.euiColorVis1_behindText; + return ( + + + + + + + + + + +

+ {i18n.translate( + 'searchApiPanels.preprocessData.overview.dataEnrichment.title', + { + defaultMessage: 'Data enrichment', + } + )} +

+
+ + +

+ {i18n.translate( + 'searchApiPanels.preprocessData.overview.dataEnrichment.description', + { + defaultMessage: + 'Add information from external sources or apply transformations to your documents for more contextual, insightful search.', + } + )} +

+
+ + +

+ + {i18n.translate( + 'searchApiPanels.preprocessData.overview.dataEnrichment.learnMore', + { + defaultMessage: 'Learn more', + } + )} + +

+
+
+
+
+ + + + + + + +

+ {i18n.translate('searchApiPanels.pipeline.overview.dataFiltering.title', { + defaultMessage: 'Data filtering', + })} +

+
+ + + {i18n.translate('searchApiPanels.pipeline.overview.dataFiltering.description', { + defaultMessage: + 'Remove specific fields from documents before indexing, to exclude unnecessary or sensitive information.', + })} + + + +

+ + {i18n.translate( + 'searchApiPanels.preprocessData.overview.dataFiltering.learnMore', + { + defaultMessage: 'Learn more', + } + )} + +

+
+
+
+
+ + + + + + + +

+ {i18n.translate('searchApiPanels.pipeline.overview.arrayJsonHandling.title', { + defaultMessage: 'Array/JSON handling', + })} +

+
+ + + {i18n.translate( + 'searchApiPanels.pipeline.overview.arrayJsonHandling.description', + { + defaultMessage: 'Run batch processors, parse JSON data and sort elements.', + } + )} + + + +

+ + {i18n.translate( + 'searchApiPanels.preprocessData.overview.arrayJsonHandling.learnMore', + { + defaultMessage: 'Learn more', + } + )} + +

+
+
+
+
+ + + + + + + +

+ {i18n.translate('searchApiPanels.pipeline.overview.dataTransformation.title', { + defaultMessage: 'Data transformation', + })} +

+
+ + + {i18n.translate( + 'searchApiPanels.pipeline.overview.dataTransformation.description', + { + defaultMessage: + 'Parse information from your documents to ensure they conform to a standardized format.', + } + )} + + + +

+ + {i18n.translate( + 'searchApiPanels.preprocessData.overview.dataTransformation.learnMore', + { + defaultMessage: 'Learn more', + } + )} + +

+
+
+
+
+ + + + + + + +

+ {i18n.translate('searchApiPanels.pipeline.overview.pipelineHandling.title', { + defaultMessage: 'Pipeline handling', + })} +

+
+ + + {i18n.translate( + 'searchApiPanels.pipeline.overview.pipelineHandling.description', + { + defaultMessage: + 'Handle error exceptions, execute another pipeline, or reroute documents to another index', + } + )} + + + +

+ + {i18n.translate( + 'searchApiPanels.preprocessData.overview.pipelineHandling.learnMore', + { + defaultMessage: 'Learn more', + } + )} + +

+
+
+
+
+
+
+
+ ); +}; diff --git a/packages/kbn-search-api-panels/index.tsx b/packages/kbn-search-api-panels/index.tsx index ada194f6fab46..8ba4b1337e6bf 100644 --- a/packages/kbn-search-api-panels/index.tsx +++ b/packages/kbn-search-api-panels/index.tsx @@ -22,6 +22,7 @@ export * from './components/pipeline_panel'; export * from './components/select_client'; export * from './components/try_in_console_button'; export * from './components/install_client'; +export * from './components/preprocess_data'; export * from './types'; export * from './utils'; diff --git a/packages/kbn-search-api-panels/tsconfig.json b/packages/kbn-search-api-panels/tsconfig.json index ace7672996696..c407f56b9ea28 100644 --- a/packages/kbn-search-api-panels/tsconfig.json +++ b/packages/kbn-search-api-panels/tsconfig.json @@ -21,6 +21,7 @@ "@kbn/share-plugin", "@kbn/i18n-react", "@kbn/security-plugin", - "@kbn/console-plugin" + "@kbn/console-plugin", + "@kbn/ui-theme" ] } diff --git a/x-pack/plugins/serverless_search/common/doc_links.ts b/x-pack/plugins/serverless_search/common/doc_links.ts index b1e970a34f18c..41eb7c4acac0c 100644 --- a/x-pack/plugins/serverless_search/common/doc_links.ts +++ b/x-pack/plugins/serverless_search/common/doc_links.ts @@ -52,6 +52,14 @@ class ESDocLinks { public gettingStartedSearch: string = ''; public gettingStartedExplore: string = ''; + // Ingest processor + public dataEnrichment: string = ''; + public dataFiltering: string = ''; + public arrayOrJson: string = ''; + public dataTransformation: string = ''; + public pipelineHandling: string = ''; + public pipelines: string = ''; + constructor() {} setDocLinks(newDocLinks: DocLinks) { @@ -94,7 +102,7 @@ class ESDocLinks { this.pythonApiReference = newDocLinks.serverlessClients.pythonGettingStarted; this.pythonBasicConfig = newDocLinks.serverlessClients.pythonGettingStarted; this.pythonClient = newDocLinks.serverlessClients.pythonGettingStarted; - // Python + // Ruby this.rubyBasicConfig = newDocLinks.serverlessClients.rubyGettingStarted; this.rubyExamples = newDocLinks.serverlessClients.rubyApiReference; this.rubyClient = newDocLinks.serverlessClients.rubyGettingStarted; @@ -103,6 +111,14 @@ class ESDocLinks { this.gettingStartedIngest = newDocLinks.serverlessSearch.gettingStartedIngest; this.gettingStartedSearch = newDocLinks.serverlessSearch.gettingStartedSearch; this.gettingStartedExplore = newDocLinks.serverlessSearch.gettingStartedExplore; + + // Ingest processor + this.dataEnrichment = newDocLinks.ingest.dataEnrichment; + this.dataFiltering = newDocLinks.ingest.dataFiltering; + this.arrayOrJson = newDocLinks.ingest.arrayOrJson; + this.dataTransformation = newDocLinks.ingest.dataTransformation; + this.pipelineHandling = newDocLinks.ingest.pipelineHandling; + this.pipelines = newDocLinks.ingest.pipelines; } } diff --git a/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_index_name.tsx b/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_index_name.tsx index 58ba4c4250d34..2491fa844c5e0 100644 --- a/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_index_name.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/connectors/connector_config/connector_index_name.tsx @@ -5,11 +5,22 @@ * 2.0. */ -import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui'; +import { + EuiButton, + EuiFlexGroup, + EuiFlexItem, + EuiLink, + EuiPanel, + EuiSpacer, + EuiText, + EuiTitle, + EuiCode, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { Connector, ConnectorStatus } from '@kbn/search-connectors'; import React, { useState } from 'react'; import { useQueryClient, useMutation } from '@tanstack/react-query'; +import { FormattedMessage } from '@kbn/i18n-react'; import { isValidIndexName } from '../../../../utils/validate_index_name'; import { SAVE_LABEL } from '../../../../../common/i18n_string'; import { useConnector } from '../../../hooks/api/use_connector'; @@ -17,7 +28,8 @@ import { useKibanaServices } from '../../../hooks/use_kibana'; import { ApiKeyPanel } from './api_key_panel'; import { ConnectorIndexNameForm } from './connector_index_name_form'; import { SyncScheduledCallOut } from './sync_scheduled_callout'; - +import { docLinks } from '../../../../../common/doc_links'; +import { DEFAULT_INGESTION_PIPELINE } from '../../../constants'; interface ConnectorIndexNameProps { connector: Connector; } @@ -80,6 +92,51 @@ export const ConnectorIndexName: React.FC = ({ connecto onChange={(name) => setNewIndexname(name)} /> + + + + +

+ {i18n.translate('xpack.serverlessSearch.connectors.config.preprocessData.title', { + defaultMessage: 'Preprocess your data', + })} +

+
+
+ + +

+ {DEFAULT_INGESTION_PIPELINE}, + }} + /> +

+
+
+ + +

+ + {i18n.translate( + 'xpack.serverlessSearch.connectors.config.preprocessDataTitle.learnMore', + { + defaultMessage: 'Learn More', + } + )} + +

+
+
+
+
+ diff --git a/x-pack/plugins/serverless_search/public/application/components/overview.test.tsx b/x-pack/plugins/serverless_search/public/application/components/overview.test.tsx index 444ba50d08003..5c6d18fbf743d 100644 --- a/x-pack/plugins/serverless_search/public/application/components/overview.test.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/overview.test.tsx @@ -83,9 +83,13 @@ describe('', () => { const { getByRole } = render(); expect(getByRole('heading', { name: 'Build your first search query' })).toBeDefined(); }); - test('transform data', () => { + test('preprocess data', () => { const { getByRole } = render(); - expect(getByRole('heading', { name: 'Transform and enrich your data' })).toBeDefined(); + expect( + getByRole('heading', { + name: 'Preprocess your data by enriching, transforming or filtering with pipelines', + }) + ).toBeDefined(); }); test("what's next?", () => { const { getByRole } = render(); diff --git a/x-pack/plugins/serverless_search/public/application/components/overview.tsx b/x-pack/plugins/serverless_search/public/application/components/overview.tsx index 3fcf7bc2d5cd6..060c4c5eb8357 100644 --- a/x-pack/plugins/serverless_search/public/application/components/overview.tsx +++ b/x-pack/plugins/serverless_search/public/application/components/overview.tsx @@ -12,13 +12,12 @@ import { EuiFlexGroup, EuiFlexItem, EuiIcon, - EuiLink, EuiPageTemplate, EuiPanel, EuiText, + EuiBadge, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; import { WelcomeBanner, IngestData, @@ -28,6 +27,7 @@ import { InstallClientPanel, getLanguageDefinitionCodeSnippet, getConsoleRequest, + PreprocessDataPanel, } from '@kbn/search-api-panels'; import React, { useEffect, useMemo, useState, FC, PropsWithChildren } from 'react'; @@ -36,7 +36,7 @@ import type { LanguageDefinitionSnippetArguments, } from '@kbn/search-api-panels'; import { useLocation } from 'react-router-dom'; -import { CloudDetailsPanel, PipelinePanel } from '@kbn/search-api-panels'; +import { CloudDetailsPanel } from '@kbn/search-api-panels'; import { docLinks } from '../../../common/doc_links'; import { useKibanaServices } from '../hooks/use_kibana'; import { useAssetBasePath } from '../hooks/use_asset_base_path'; @@ -53,6 +53,8 @@ import { ApiKeyPanel } from './api_key/api_key'; import { ConnectorIngestionPanel } from './connectors_ingestion'; import { PipelineButtonOverview } from './pipeline_button_overview'; import { SelectClientCallouts } from './select_client_callouts'; +import { PipelineManageButton } from './pipeline_manage_button'; +import { OPTIONAL_LABEL } from '../../../common/i18n_string'; export const ElasticsearchOverview = () => { const [selectedLanguage, setSelectedLanguage] = useState(javaDefinition); @@ -66,6 +68,7 @@ export const ElasticsearchOverview = () => { }, [cloud]); const assetBasePath = useAssetBasePath(); const { hash } = useLocation(); + useEffect(() => { if (hash) { const id = hash.replace('#', ''); @@ -237,6 +240,56 @@ export const ElasticsearchOverview = () => { })} /> + + + +
+ {OPTIONAL_LABEL} +
+
+ + {i18n.translate('xpack.serverlessSearch.preprocessData.description', { + defaultMessage: + 'Use ingest pipelines to preprocess your data before indexing into Elasticsearch. This is often much easier and cheaper than post-processing. Use any combination of ingest processors to add, delete, or transform fields in your documents.', + })} + +
+ } + leftPanelContent={ + + } + links={[]} + title={i18n.translate('xpack.serverlessSearch.preprocessData.title', { + defaultMessage: + 'Preprocess your data by enriching, transforming or filtering with pipelines', + })} + children={ + + + + + + + + + } + /> + { })} /> - - - {i18n.translate( - 'xpack.serverlessSearch.pipeline.description.ingestPipelinesLink.link', - { - defaultMessage: 'ingest pipelines', - } - )} - - ), - }} - /> - } - leftPanelContent={ - - } - links={[]} - title={i18n.translate('xpack.serverlessSearch.pipeline.title', { - defaultMessage: 'Transform and enrich your data', - })} - children={} - /> - + { + const { http } = useKibanaServices(); + + return ( + <> + + + + {i18n.translate('xpack.serverlessSearch.pipeline.description.manageButtonLabel', { + defaultMessage: 'Manage pipeline', + })} + + + + ); +}; diff --git a/x-pack/plugins/serverless_search/public/application/constants.ts b/x-pack/plugins/serverless_search/public/application/constants.ts index 8e8c15638a860..c714e9826028e 100644 --- a/x-pack/plugins/serverless_search/public/application/constants.ts +++ b/x-pack/plugins/serverless_search/public/application/constants.ts @@ -9,6 +9,7 @@ export const API_KEY_PLACEHOLDER = 'your_api_key'; export const ELASTICSEARCH_URL_PLACEHOLDER = 'https://your_deployment_url'; export const CLOUD_ID_PLACEHOLDER = ''; export const INDEX_NAME_PLACEHOLDER = 'index_name'; +export const DEFAULT_INGESTION_PIPELINE = 'search-default-ingestion'; // Paths export const BASE_CONNECTORS_PATH = 'connectors'; diff --git a/x-pack/plugins/serverless_search/public/assets/array_handling.svg b/x-pack/plugins/serverless_search/public/assets/array_handling.svg new file mode 100644 index 0000000000000..3df3d07a947a9 --- /dev/null +++ b/x-pack/plugins/serverless_search/public/assets/array_handling.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/x-pack/plugins/serverless_search/public/assets/cluster.svg b/x-pack/plugins/serverless_search/public/assets/cluster.svg deleted file mode 100644 index 99d4d0a731377..0000000000000 --- a/x-pack/plugins/serverless_search/public/assets/cluster.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/x-pack/plugins/serverless_search/public/assets/cut.svg b/x-pack/plugins/serverless_search/public/assets/cut.svg deleted file mode 100644 index 58d33d453d716..0000000000000 --- a/x-pack/plugins/serverless_search/public/assets/cut.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/x-pack/plugins/serverless_search/public/assets/data_enrichment.svg b/x-pack/plugins/serverless_search/public/assets/data_enrichment.svg new file mode 100644 index 0000000000000..d112a6be32e89 --- /dev/null +++ b/x-pack/plugins/serverless_search/public/assets/data_enrichment.svg @@ -0,0 +1,4 @@ + + + + diff --git a/x-pack/plugins/serverless_search/public/assets/data_filtering.svg b/x-pack/plugins/serverless_search/public/assets/data_filtering.svg new file mode 100644 index 0000000000000..e8beee6e62090 --- /dev/null +++ b/x-pack/plugins/serverless_search/public/assets/data_filtering.svg @@ -0,0 +1,4 @@ + + + + diff --git a/x-pack/plugins/serverless_search/public/assets/data_transformation.svg b/x-pack/plugins/serverless_search/public/assets/data_transformation.svg new file mode 100644 index 0000000000000..055505099c804 --- /dev/null +++ b/x-pack/plugins/serverless_search/public/assets/data_transformation.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/x-pack/plugins/serverless_search/public/assets/enrichment.svg b/x-pack/plugins/serverless_search/public/assets/enrichment.svg new file mode 100644 index 0000000000000..31a3229fd86d7 --- /dev/null +++ b/x-pack/plugins/serverless_search/public/assets/enrichment.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/x-pack/plugins/serverless_search/public/assets/pipeline_handling.svg b/x-pack/plugins/serverless_search/public/assets/pipeline_handling.svg new file mode 100644 index 0000000000000..5d85b6b50d79f --- /dev/null +++ b/x-pack/plugins/serverless_search/public/assets/pipeline_handling.svg @@ -0,0 +1,4 @@ + + + + diff --git a/x-pack/plugins/serverless_search/public/assets/reporter.svg b/x-pack/plugins/serverless_search/public/assets/reporter.svg deleted file mode 100644 index bfd2a2afe869c..0000000000000 --- a/x-pack/plugins/serverless_search/public/assets/reporter.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index b7ab876f0a37b..85405d2207673 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -38224,7 +38224,6 @@ "xpack.serverlessSearch.indexManagement.indexDetails.overview.emptyPrompt.api.body": "Personnalisez ces variables en fonction de votre contenu. Pour un guide d'installation complet, consultez notre guide {getStartedLink}.", "xpack.serverlessSearch.indexManagement.indexDetails.overview.emptyPrompt.body": "Alimentez votre index avec des données en utilisant {logstashLink}, {beatsLink}, {connectorsLink} ou RESTful {apiCallsLink}.", "xpack.serverlessSearch.indexManagement.indexDetails.overview.storagePanel.documentCount": "{documentCount} documents / {deletedCount} supprimés", - "xpack.serverlessSearch.pipeline.description": "Utilisez {ingestPipelinesLink} pour préparer vos données avant leur indexation dans Elasticsearch, ce qui est souvent plus facile que le post-traitement. Utilisez n'importe quelle combinaison de processeurs d'ingestion pour ajouter, supprimer ou transformer les champs dans vos documents.", "xpack.serverlessSearch.searchConnectors.configurationConnector.config.documentation.description": "Ce connecteur prend en charge plusieurs méthodes d'authentification. Demandez à votre administrateur les informations d'identification correctes pour la connexion. {documentationUrl}", "xpack.serverlessSearch.apiKey.apiKeyStepDescription": "Cette clé ne s’affichera qu’une fois, conservez-la donc en lieu sûr. Nous ne conservons pas vos clés d’API, vous devrez donc générer une clé de remplacement si vous la perdez.", "xpack.serverlessSearch.apiKey.apiKeyStepTitle": "Stocker cette clé d'API", @@ -38398,8 +38397,6 @@ "xpack.serverlessSearch.overview.footer.links.inviteUsers": "Inviter d'autres utilisateurs", "xpack.serverlessSearch.overview.footer.title": "Tirez pleinement partie de vos données", "xpack.serverlessSearch.pipeline.description.createButtonLabel": "Créer un pipeline", - "xpack.serverlessSearch.pipeline.description.ingestPipelinesLink.link": "pipelines d'ingestion", - "xpack.serverlessSearch.pipeline.title": "Transformer et enrichir vos données", "xpack.serverlessSearch.required": "Obligatoire", "xpack.serverlessSearch.save": "Enregistrer", "xpack.serverlessSearch.searchConnectors.configurationConnector.config.documentation.link": "Documentation", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 682369f38add6..8faf553c2b60f 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -38192,7 +38192,6 @@ "xpack.serverlessSearch.indexManagement.indexDetails.overview.emptyPrompt.api.body": "これらの変数をコンテンツに合わせてカスタマイズします。詳細なセットアップガイドについては、{getStartedLink}ガイドをご覧ください。", "xpack.serverlessSearch.indexManagement.indexDetails.overview.emptyPrompt.body": "{logstashLink}、{beatsLink}、{connectorsLink}、またはRESTful {apiCallsLink}を使用して、データにインデックスを入力します。", "xpack.serverlessSearch.indexManagement.indexDetails.overview.storagePanel.documentCount": "{documentCount}件のドキュメント / {deletedCount}削除済み", - "xpack.serverlessSearch.pipeline.description": "{ingestPipelinesLink}を使うと、Elasticsearchにインデックス化される前にデータを前処理することができます。通常、これは後処理よりも大幅に簡単です。インジェストプロセッサーを自由に組み合わせて、ドキュメント内のフィールドを追加、削除、変換できます。", "xpack.serverlessSearch.searchConnectors.configurationConnector.config.documentation.description": "このコネクターは複数の認証方法をサポートします。正しい接続資格情報については、管理者に確認してください。{documentationUrl}", "xpack.serverlessSearch.apiKey.apiKeyStepDescription": "このキーは一度しか表示されないため、安全な場所に保存しておいてください。当社はお客様のAPIキーを保存しません。キーを紛失した場合は、代替キーを生成する必要があります。", "xpack.serverlessSearch.apiKey.apiKeyStepTitle": "このAPIキーを保存", @@ -38366,8 +38365,6 @@ "xpack.serverlessSearch.overview.footer.links.inviteUsers": "その他のユーザーを招待", "xpack.serverlessSearch.overview.footer.title": "実際のデータで作業しよう", "xpack.serverlessSearch.pipeline.description.createButtonLabel": "パイプラインを作成", - "xpack.serverlessSearch.pipeline.description.ingestPipelinesLink.link": "インジェストパイプライン", - "xpack.serverlessSearch.pipeline.title": "データの変換とエンリッチ", "xpack.serverlessSearch.required": "必須", "xpack.serverlessSearch.save": "保存", "xpack.serverlessSearch.searchConnectors.configurationConnector.config.documentation.link": "ドキュメント", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 0590fc66d5abc..db6fbc1aad175 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -38236,7 +38236,6 @@ "xpack.serverlessSearch.indexManagement.indexDetails.overview.emptyPrompt.api.body": "定制这些变量以匹配您的内容。如需完整的设置指南,请访问我们的{getStartedLink}指南。", "xpack.serverlessSearch.indexManagement.indexDetails.overview.emptyPrompt.body": "使用 {logstashLink}、{beatsLink}、{connectorsLink} 或 RESTful {apiCallsLink} 为您的索引填充数据。", "xpack.serverlessSearch.indexManagement.indexDetails.overview.storagePanel.documentCount": "{documentCount} 个文档/{deletedCount} 个已删除", - "xpack.serverlessSearch.pipeline.description": "使用 {ingestPipelinesLink} 在将您的数据索引到 Elasticsearch 之前预处理这些数据,这通常比后期处理更加方便。使用采集处理器的任意组合在您的文档中添加、删除或转换字段。", "xpack.serverlessSearch.searchConnectors.configurationConnector.config.documentation.description": "此连接器支持几种身份验证方法。请联系管理员获取正确的连接凭据。{documentationUrl}", "xpack.serverlessSearch.apiKey.apiKeyStepDescription": "此密钥仅显示一次,因此请将其保存到某个安全位置。我们不存储您的 API 密钥,因此,如果您丢失了密钥,则需要生成替代密钥。", "xpack.serverlessSearch.apiKey.apiKeyStepTitle": "存储此 API 密钥", @@ -38410,8 +38409,6 @@ "xpack.serverlessSearch.overview.footer.links.inviteUsers": "邀请更多用户", "xpack.serverlessSearch.overview.footer.title": "充分利用您的数据", "xpack.serverlessSearch.pipeline.description.createButtonLabel": "创建管道", - "xpack.serverlessSearch.pipeline.description.ingestPipelinesLink.link": "采集管道", - "xpack.serverlessSearch.pipeline.title": "转换和扩充数据", "xpack.serverlessSearch.required": "必需", "xpack.serverlessSearch.save": "保存", "xpack.serverlessSearch.searchConnectors.configurationConnector.config.documentation.link": "文档", diff --git a/x-pack/test_serverless/functional/page_objects/svl_search_landing_page.ts b/x-pack/test_serverless/functional/page_objects/svl_search_landing_page.ts index a2b991d5b2e14..617b0d76e2ba3 100644 --- a/x-pack/test_serverless/functional/page_objects/svl_search_landing_page.ts +++ b/x-pack/test_serverless/functional/page_objects/svl_search_landing_page.ts @@ -79,7 +79,7 @@ export function SvlSearchLandingPageProvider({ getService }: FtrProviderContext) }, }, pipeline: { - async click() { + async createPipeline() { await testSubjects.click('create-a-pipeline-button'); }, async expectNavigateToCreatePipelinePage() { @@ -87,6 +87,12 @@ export function SvlSearchLandingPageProvider({ getService }: FtrProviderContext) '/app/management/ingest/ingest_pipelines/create' ); }, + async managePipeline() { + await testSubjects.click('manage-pipeline-button'); + }, + async expectNavigateToManagePipelinePage() { + expect(await browser.getCurrentUrl()).contain('/app/management/ingest/ingest_pipelines'); + }, }, }; } diff --git a/x-pack/test_serverless/functional/test_suites/search/landing_page.ts b/x-pack/test_serverless/functional/test_suites/search/landing_page.ts index cb0b56390ace2..04b6fbc166f16 100644 --- a/x-pack/test_serverless/functional/test_suites/search/landing_page.ts +++ b/x-pack/test_serverless/functional/test_suites/search/landing_page.ts @@ -92,11 +92,18 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); }); - describe('Pipeline creation', async () => { + describe('Pipelines', async () => { + beforeEach(async () => { + await svlSearchNavigation.navigateToLandingPage(); + }); it('can redirect to the pipeline creation index page', async () => { - await pageObjects.svlSearchLandingPage.pipeline.click(); + await pageObjects.svlSearchLandingPage.pipeline.createPipeline(); await pageObjects.svlSearchLandingPage.pipeline.expectNavigateToCreatePipelinePage(); }); + it('can redirect to the manage pipelines page', async () => { + await pageObjects.svlSearchLandingPage.pipeline.managePipeline(); + await pageObjects.svlSearchLandingPage.pipeline.expectNavigateToManagePipelinePage(); + }); }); }); }