From d32c8674178e9d31280e03599638861407a75241 Mon Sep 17 00:00:00 2001 From: Saarika Bhasi <55930906+saarikabhasi@users.noreply.github.com> Date: Fri, 21 Apr 2023 09:24:02 -0400 Subject: [PATCH] [Enterprise Search][Search Application] Update engines to be search application (#155299) ## Summary * Update 'engines' to be 'Search Application' in UI * Navigate to Search application from indices page rather than app search engine * Pre-select index and open Create Search Application Flyout when navigated from Index page https://user-images.githubusercontent.com/55930906/233170965-318cdc63-2953-45f8-89d3-b3f15f11ab11.mov ### 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) - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../enterprise_search/common/constants.ts | 4 +- .../components/engine/add_indices_flyout.tsx | 7 +- .../engine/add_indices_logic.test.ts | 41 ++------- .../components/engine/add_indices_logic.ts | 12 ++- .../engine_connect/engine_api_integration.tsx | 2 +- .../generate_engine_api_key_modal.tsx | 2 +- .../engine_connect/search_application_api.tsx | 66 ++++++++------ .../components/engine/engine_error.test.tsx | 2 +- .../components/engine/engine_error.tsx | 9 +- .../components/engine/engine_indices.tsx | 8 +- .../engine/engine_view_header_actions.tsx | 87 ------------------- .../components/engine/header_docs_action.tsx | 2 +- .../components/indices_select_combobox.tsx | 7 +- .../components/tables/engines_table.tsx | 8 +- .../engines/create_engine_flyout.tsx | 41 +++++---- .../engines/create_engine_logic.test.ts | 17 ++-- .../components/engines/create_engine_logic.ts | 18 ++-- .../engines/delete_engine_modal.tsx | 6 +- .../components/engines/engines_list.tsx | 73 +++++++++------- .../engines/engines_list_logic.test.ts | 20 +---- .../components/engines/engines_list_logic.ts | 13 +-- .../components/engines/engines_router.tsx | 5 +- .../new_index/new_index_created_toast.tsx | 29 ------- .../create_engine_menu_item.tsx | 30 ++++--- .../header_actions/search_engines_popover.tsx | 19 ++-- .../search_indices/delete_index_modal.tsx | 2 +- .../translations/translations/fr-FR.json | 27 ------ .../translations/translations/ja-JP.json | 27 ------ .../translations/translations/zh-CN.json | 27 ------ 29 files changed, 205 insertions(+), 406 deletions(-) delete mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_view_header_actions.tsx diff --git a/x-pack/plugins/enterprise_search/common/constants.ts b/x-pack/plugins/enterprise_search/common/constants.ts index bdaf569d27143..34a48c7c76ccf 100644 --- a/x-pack/plugins/enterprise_search/common/constants.ts +++ b/x-pack/plugins/enterprise_search/common/constants.ts @@ -119,8 +119,8 @@ export const SEARCH_EXPERIENCES_PLUGIN = { }; export const ENGINES_PLUGIN = { - NAV_TITLE: i18n.translate('xpack.enterpriseSearch.engines.navTitle', { - defaultMessage: 'Engines', + NAV_TITLE: i18n.translate('xpack.enterpriseSearch.applications.navTitle', { + defaultMessage: 'Applications', }), }; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/add_indices_flyout.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/add_indices_flyout.tsx index 22ab72ba3a405..7d504c65bb7ac 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/add_indices_flyout.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/add_indices_flyout.tsx @@ -45,10 +45,13 @@ export const AddIndicesFlyout: React.FC = ({ onClose }) = const { selectedIndices, updateEngineStatus, updateEngineError } = useValues(AddIndicesLogic); const { setSelectedIndices, submitSelectedIndices } = useActions(AddIndicesLogic); - const selectedOptions = useMemo(() => selectedIndices.map(indexToOption), [selectedIndices]); + const selectedOptions = useMemo( + () => selectedIndices.map((index) => indexToOption(index)), + [selectedIndices] + ); const onIndicesChange = useCallback( (options: IndicesSelectComboBoxOption[]) => { - setSelectedIndices(options.map(({ value }) => value).filter(isNotNullish)); + setSelectedIndices(options.map(({ label }) => label).filter(isNotNullish)); }, [setSelectedIndices] ); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/add_indices_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/add_indices_logic.test.ts index a60c6e9df756a..7b3e61940f001 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/add_indices_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/add_indices_logic.test.ts @@ -8,7 +8,6 @@ import { LogicMounter } from '../../../__mocks__/kea_logic'; import { Status } from '../../../../../common/types/api'; -import { ElasticsearchIndexWithIngestion } from '../../../../../common/types/indices'; import { AddIndicesLogic, AddIndicesLogicValues } from './add_indices_logic'; @@ -18,16 +17,6 @@ const DEFAULT_VALUES: AddIndicesLogicValues = { updateEngineStatus: Status.IDLE, }; -const makeIndexData = (name: string): ElasticsearchIndexWithIngestion => ({ - count: 0, - hidden: false, - name, - total: { - docs: { count: 0, deleted: 0 }, - store: { size_in_bytes: 'n/a' }, - }, -}); - describe('AddIndicesLogic', () => { const { mount: mountAddIndicesLogic } = new LogicMounter(AddIndicesLogic); const { mount: mountEngineIndicesLogic } = new LogicMounter(AddIndicesLogic); @@ -47,31 +36,16 @@ describe('AddIndicesLogic', () => { describe('actions', () => { describe('setSelectedIndices', () => { it('adds the indices to selectedIndices', () => { - AddIndicesLogic.actions.setSelectedIndices([ - makeIndexData('index-001'), - makeIndexData('index-002'), - ]); + AddIndicesLogic.actions.setSelectedIndices(['index-001', 'index-002']); - expect(AddIndicesLogic.values.selectedIndices).toEqual([ - makeIndexData('index-001'), - makeIndexData('index-002'), - ]); + expect(AddIndicesLogic.values.selectedIndices).toEqual(['index-001', 'index-002']); }); it('replaces any existing indices', () => { - AddIndicesLogic.actions.setSelectedIndices([ - makeIndexData('index-001'), - makeIndexData('index-002'), - ]); - AddIndicesLogic.actions.setSelectedIndices([ - makeIndexData('index-003'), - makeIndexData('index-004'), - ]); + AddIndicesLogic.actions.setSelectedIndices(['index-001', 'index-002']); + AddIndicesLogic.actions.setSelectedIndices(['index-003', 'index-004']); - expect(AddIndicesLogic.values.selectedIndices).toEqual([ - makeIndexData('index-003'), - makeIndexData('index-004'), - ]); + expect(AddIndicesLogic.values.selectedIndices).toEqual(['index-003', 'index-004']); }); }); }); @@ -103,10 +77,7 @@ describe('AddIndicesLogic', () => { it('calls addIndicesToEngine when there are selectedIndices', () => { jest.spyOn(AddIndicesLogic.actions, 'addIndicesToEngine'); - AddIndicesLogic.actions.setSelectedIndices([ - makeIndexData('index-001'), - makeIndexData('index-002'), - ]); + AddIndicesLogic.actions.setSelectedIndices(['index-001', 'index-002']); AddIndicesLogic.actions.submitSelectedIndices(); expect(AddIndicesLogic.actions.addIndicesToEngine).toHaveBeenCalledTimes(1); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/add_indices_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/add_indices_logic.ts index 37e5cf43ebd00..add950937b30a 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/add_indices_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/add_indices_logic.ts @@ -7,8 +7,6 @@ import { kea, MakeLogicType } from 'kea'; -import { ElasticsearchIndexWithIngestion } from '../../../../../common/types/indices'; - import { UpdateEngineApiLogic } from '../../api/engines/update_engine_api_logic'; import { EngineIndicesLogic, EngineIndicesLogicActions } from './engine_indices_logic'; @@ -17,21 +15,21 @@ export interface AddIndicesLogicActions { addIndicesToEngine: EngineIndicesLogicActions['addIndicesToEngine']; closeAddIndicesFlyout: EngineIndicesLogicActions['closeAddIndicesFlyout']; engineUpdated: EngineIndicesLogicActions['engineUpdated']; - setSelectedIndices: (indices: ElasticsearchIndexWithIngestion[]) => { - indices: ElasticsearchIndexWithIngestion[]; + setSelectedIndices: (indices: string[]) => { + indices: string[]; }; submitSelectedIndices: () => void; } export interface AddIndicesLogicValues { - selectedIndices: ElasticsearchIndexWithIngestion[]; + selectedIndices: string[]; updateEngineError: typeof UpdateEngineApiLogic.values.error | undefined; updateEngineStatus: typeof UpdateEngineApiLogic.values.status; } export const AddIndicesLogic = kea>({ actions: { - setSelectedIndices: (indices: ElasticsearchIndexWithIngestion[]) => ({ indices }), + setSelectedIndices: (indices: string[]) => ({ indices }), submitSelectedIndices: () => true, }, connect: { @@ -46,7 +44,7 @@ export const AddIndicesLogic = kea name)); + actions.addIndicesToEngine(selectedIndices); }, }), path: ['enterprise_search', 'content', 'add_indices_logic'], diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_connect/engine_api_integration.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_connect/engine_api_integration.tsx index 778d69a5ed56b..b61614838d7a1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_connect/engine_api_integration.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_connect/engine_api_integration.tsx @@ -73,7 +73,7 @@ export const EngineApiIntegrationStage: React.FC = () => {

{i18n.translate('xpack.enterpriseSearch.content.engine.api.step3.intro', { defaultMessage: - 'Learn how to integrate with your engine with the language clients maintained by Elastic to help build your search experience.', + 'Learn how to integrate with your search application with the language clients maintained by Elastic to help build your search experience.', })}

diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_connect/generate_engine_api_key_modal/generate_engine_api_key_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_connect/generate_engine_api_key_modal/generate_engine_api_key_modal.tsx index c0cbcea37e93a..b4d03456ff5ec 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_connect/generate_engine_api_key_modal/generate_engine_api_key_modal.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_connect/generate_engine_api_key_modal/generate_engine_api_key_modal.tsx @@ -59,7 +59,7 @@ export const GenerateEngineApiKeyModal: React.FC {i18n.translate( 'xpack.enterpriseSearch.content.engine.api.generateEngineApiKeyModal.title', { - defaultMessage: 'Create Engine read-only API Key', + defaultMessage: 'Create Search application read-only API Key', } )} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_connect/search_application_api.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_connect/search_application_api.tsx index c51654f0c557d..9d3c27895657f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_connect/search_application_api.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_connect/search_application_api.tsx @@ -43,26 +43,32 @@ export const SearchApplicationAPI = () => { const steps = [ { - title: i18n.translate('xpack.enterpriseSearch.content.engine.api.step1.title', { + title: i18n.translate('xpack.enterpriseSearch.content.searchApplication.api.step1.title', { defaultMessage: 'Generate and save API key', }), children: ( <>

- {i18n.translate('xpack.enterpriseSearch.content.engine.api.step1.apiKeyWarning', { - defaultMessage: - "Elastic does not store API keys. Once generated, you'll only be able to view the key one time. Make sure you save it somewhere secure. If you lose access to it you'll need to generate a new API key from this screen.", - })}{' '} + {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.api.step1.apiKeyWarning', + { + defaultMessage: + "Elastic does not store API keys. Once generated, you'll only be able to view the key one time. Make sure you save it somewhere secure. If you lose access to it you'll need to generate a new API key from this screen.", + } + )}{' '} - {i18n.translate('xpack.enterpriseSearch.content.engine.api.step1.learnMoreLink', { - defaultMessage: 'Learn more about API keys.', - })} + {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.api.step1.learnMoreLink', + { + defaultMessage: 'Learn more about API keys.', + } + )}

@@ -73,10 +79,10 @@ export const SearchApplicationAPI = () => { iconSide="left" iconType="plusInCircleFilled" onClick={openGenerateModal} - data-telemetry-id="entSearchContent-engines-api-step1-createApiKeyButton" + data-telemetry-id="entSearchContent-searchApplications-api-step1-createApiKeyButton" > {i18n.translate( - 'xpack.enterpriseSearch.content.engine.api.step1.createAPIKeyButton', + 'xpack.enterpriseSearch.content.searchApplication.api.step1.createAPIKeyButton', { defaultMessage: 'Create API Key', } @@ -87,16 +93,19 @@ export const SearchApplicationAPI = () => { KibanaLogic.values.navigateToUrl('/app/management/security/api_keys', { shouldNotCreateHref: true, }) } > - {i18n.translate('xpack.enterpriseSearch.content.engine.api.step1.viewKeysButton', { - defaultMessage: 'View Keys', - })} + {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.api.step1.viewKeysButton', + { + defaultMessage: 'View Keys', + } + )} @@ -104,17 +113,17 @@ export const SearchApplicationAPI = () => { ), }, { - title: i18n.translate('xpack.enterpriseSearch.content.engine.api.step2.title', { - defaultMessage: "Copy your engine's endpoint", + title: i18n.translate('xpack.enterpriseSearch.content.searchApplication.api.step2.title', { + defaultMessage: "Copy your search application's endpoint", }), children: ( <>

{i18n.translate( - 'xpack.enterpriseSearch.content.engine.api.step2.copyEndpointDescription', + 'xpack.enterpriseSearch.content.searchApplication.api.step2.copyEndpointDescription', { - defaultMessage: "Use this URL to access your engine's API endpoints.", + defaultMessage: "Use this URL to access your search application's API endpoints.", } )}

@@ -131,22 +140,22 @@ export const SearchApplicationAPI = () => { ), }, { - title: i18n.translate('xpack.enterpriseSearch.content.engine.api.step3.title', { + title: i18n.translate('xpack.enterpriseSearch.content.searchApplication.api.step3.title', { defaultMessage: 'Learn how to call your endpoints', }), children: , }, { - title: i18n.translate('xpack.enterpriseSearch.content.engine.api.step4.title', { + title: i18n.translate('xpack.enterpriseSearch.content.searchApplication.api.step4.title', { defaultMessage: '(Optional) Power up your analytics', }), children: ( <>

- {i18n.translate('xpack.enterpriseSearch.content.engine.api.step4.copy', { + {i18n.translate('xpack.enterpriseSearch.content.searchApplication.api.step4.copy', { defaultMessage: - 'Your engine provides basic analytics data as part of this installation. To receive more granular and custom metrics, integrate our Behavioral Analytics script on your platform.', + 'Your search application provides basic analytics data as part of this installation. To receive more granular and custom metrics, integrate our Behavioral Analytics script on your platform.', })}

@@ -154,7 +163,7 @@ export const SearchApplicationAPI = () => { navigateToUrl( generateEncodedPath(`${ANALYTICS_PLUGIN.URL}${COLLECTION_INTEGRATE_PATH}`, { @@ -166,9 +175,12 @@ export const SearchApplicationAPI = () => { iconSide="left" iconType="popout" > - {i18n.translate('xpack.enterpriseSearch.content.engine.api.step4.learnHowLink', { - defaultMessage: 'Learn how', - })} + {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplication.api.step4.learnHowLink', + { + defaultMessage: 'Learn how', + } + )} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_error.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_error.test.tsx index 9c71c401fbaf0..0f47d2437e3dc 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_error.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_error.test.tsx @@ -40,7 +40,7 @@ describe('EngineError', () => { const notFound = wrapper.find(NotFoundPrompt); expect(notFound.prop('backToLink')).toEqual('/engines'); - expect(notFound.prop('backToContent')).toEqual('Back to Engines'); + expect(notFound.prop('backToContent')).toEqual('Back to Search Applications'); const telemetry = wrapper.find(SendEnterpriseSearchTelemetry); expect(telemetry.prop('action')).toEqual('error'); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_error.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_error.tsx index b8be4c7652e1b..d36ff3e14e7a7 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_error.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_error.tsx @@ -27,9 +27,12 @@ export const EngineError: React.FC<{ error?: HttpError; notFound?: boolean }> = <> diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_indices.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_indices.tsx index 116430e4d0017..4bcd3fcf4f215 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_indices.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_indices.tsx @@ -64,7 +64,7 @@ export const EngineIndices: React.FC = () => { description: i18n.translate( 'xpack.enterpriseSearch.content.engine.indices.actions.removeIndex.title', { - defaultMessage: 'Remove this index from engine', + defaultMessage: 'Remove this index from search application', } ), icon: 'minusInCircle', @@ -215,7 +215,7 @@ export const EngineIndices: React.FC = () => { 'xpack.enterpriseSearch.content.engine.indices.unknownIndicesCallout.description', { defaultMessage: - 'Some data might be unreachable from this engine. Check for any pending operations or errors on affected indices, or remove those that should no longer be used by this engine.', + 'Some data might be unreachable from this search application. Check for any pending operations or errors on affected indices, or remove those that should no longer be used by this search application.', } )}

@@ -259,7 +259,7 @@ export const EngineIndices: React.FC = () => { }} title={i18n.translate( 'xpack.enterpriseSearch.content.engine.indices.removeIndexConfirm.title', - { defaultMessage: 'Remove this index from the engine' } + { defaultMessage: 'Remove this index from the Search Application' } )} buttonColor="danger" cancelButtonText={CANCEL_BUTTON_LABEL} @@ -278,7 +278,7 @@ export const EngineIndices: React.FC = () => { 'xpack.enterpriseSearch.content.engine.indices.removeIndexConfirm.description', { defaultMessage: - "This won't delete the index. You may add it back to this engine at a later time.", + "This won't delete the index. You may add it back to this search application at a later time.", } )}

diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_view_header_actions.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_view_header_actions.tsx deleted file mode 100644 index bd48ee8d6d294..0000000000000 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/engine_view_header_actions.tsx +++ /dev/null @@ -1,87 +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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { useState } from 'react'; - -import { useValues, useActions } from 'kea'; - -import { EuiPopover, EuiButtonIcon, EuiText, EuiContextMenu, EuiIcon } from '@elastic/eui'; - -import { i18n } from '@kbn/i18n'; - -import { TelemetryLogic } from '../../../shared/telemetry/telemetry_logic'; - -import { EngineViewLogic } from './engine_view_logic'; - -export const EngineViewHeaderActions: React.FC = () => { - const { engineData } = useValues(EngineViewLogic); - - const { openDeleteEngineModal } = useActions(EngineViewLogic); - const { sendEnterpriseSearchTelemetry } = useActions(TelemetryLogic); - - const [isActionsPopoverOpen, setIsActionsPopoverOpen] = useState(false); - const toggleActionsPopover = () => setIsActionsPopoverOpen((isPopoverOpen) => !isPopoverOpen); - const closePopover = () => setIsActionsPopoverOpen(false); - return ( - <> - - } - isOpen={isActionsPopoverOpen} - panelPaddingSize="xs" - closePopover={closePopover} - display="block" - > - , - name: ( - - {i18n.translate( - 'xpack.enterpriseSearch.content.engine.headerActions.delete', - { defaultMessage: 'Delete this engine' } - )} - - ), - onClick: () => { - if (engineData) { - openDeleteEngineModal(); - sendEnterpriseSearchTelemetry({ - action: 'clicked', - metric: 'entSearchContent-engines-engineView-deleteEngine', - }); - } - }, - size: 's', - }, - ], - }, - ]} - /> - - - ); -}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/header_docs_action.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/header_docs_action.tsx index e20fbc81689a4..4e925b50c63b2 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/header_docs_action.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engine/header_docs_action.tsx @@ -21,7 +21,7 @@ export const EngineHeaderDocsAction: React.FC = () => ( target="_blank" iconType="documents" > - Engine Docs + Search Application Docs diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/components/indices_select_combobox.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/components/indices_select_combobox.tsx index 5e6f7cebd89fc..200192d1e20a4 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/components/indices_select_combobox.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/components/indices_select_combobox.tsx @@ -47,7 +47,7 @@ export const IndicesSelectComboBox = (props: IndicesSelectComboBoxProps) => { }, [searchQuery]); const options: Array> = - data?.indices?.map(indexToOption) ?? []; + data?.indices?.map((index) => indexToOption(index.name, index)) ?? []; const renderOption = (option: EuiComboBoxOptionOption) => ( @@ -84,8 +84,9 @@ export const IndicesSelectComboBox = (props: IndicesSelectComboBoxProps) => { }; export const indexToOption = ( - index: ElasticsearchIndexWithIngestion + indexName: string, + index?: ElasticsearchIndexWithIngestion ): IndicesSelectComboBoxOption => ({ - label: index.name, + label: indexName, value: index, }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/components/tables/engines_table.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/components/tables/engines_table.tsx index f07516313f6e8..de291752639fa 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/components/tables/engines_table.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/components/tables/engines_table.tsx @@ -56,7 +56,7 @@ export const EnginesListTable: React.FC = ({ { field: 'name', name: i18n.translate('xpack.enterpriseSearch.content.enginesList.table.column.name', { - defaultMessage: 'Engine Name', + defaultMessage: 'Search Application Name', }), mobileOptions: { header: true, @@ -117,7 +117,7 @@ export const EnginesListTable: React.FC = ({ description: i18n.translate( 'xpack.enterpriseSearch.content.enginesList.table.column.actions.view.buttonDescription', { - defaultMessage: 'View this engine', + defaultMessage: 'View this search application', } ), type: 'icon', @@ -134,7 +134,7 @@ export const EnginesListTable: React.FC = ({ description: i18n.translate( 'xpack.enterpriseSearch.content.enginesList.table.column.action.delete.buttonDescription', { - defaultMessage: 'Delete this engine', + defaultMessage: 'Delete this search application', } ), type: 'icon', @@ -144,7 +144,7 @@ export const EnginesListTable: React.FC = ({ i18n.translate( 'xpack.enterpriseSearch.content.engineList.table.column.actions.deleteEngineLabel', { - defaultMessage: 'Delete this engine', + defaultMessage: 'Delete this search application', } ), onClick: (engine) => { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/create_engine_flyout.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/create_engine_flyout.tsx index ae7f7423be7ce..2df12a2b9bd8f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/create_engine_flyout.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/create_engine_flyout.tsx @@ -5,13 +5,13 @@ * 2.0. */ -import React from 'react'; +import React, { useEffect } from 'react'; + +import { useLocation } from 'react-router-dom'; import { useActions, useValues } from 'kea'; import { - EuiButton, - EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiFieldText, @@ -26,6 +26,8 @@ import { EuiTitle, EuiComboBoxOptionOption, EuiCallOut, + EuiButton, + EuiButtonEmpty, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -33,14 +35,14 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { Status } from '../../../../../common/types/api'; import { ElasticsearchIndexWithIngestion } from '../../../../../common/types/indices'; -import { isNotNullish } from '../../../../../common/utils/is_not_nullish'; -import { CANCEL_BUTTON_LABEL } from '../../../shared/constants'; +import { CANCEL_BUTTON_LABEL, ESINDEX_QUERY_PARAMETER } from '../../../shared/constants'; import { docLinks } from '../../../shared/doc_links'; import { getErrorsFromHttpResponse } from '../../../shared/flash_messages/handle_api_errors'; -import { indexToOption, IndicesSelectComboBox } from './components/indices_select_combobox'; +import { parseQueryParams } from '../../../shared/query_params'; +import { indexToOption, IndicesSelectComboBox } from './components/indices_select_combobox'; import { CreateEngineLogic } from './create_engine_logic'; export interface CreateEngineFlyoutProps { @@ -60,11 +62,18 @@ export const CreateEngineFlyout = ({ onClose }: CreateEngineFlyoutProps) => { selectedIndices, } = useValues(CreateEngineLogic); + const { search } = useLocation() as unknown as Location; + const { ...params } = parseQueryParams(search); + const indexName = params[ESINDEX_QUERY_PARAMETER]; + const onIndicesChange = ( selectedOptions: Array> ) => { - setSelectedIndices(selectedOptions.map((option) => option.value).filter(isNotNullish)); + setSelectedIndices(selectedOptions.map((option) => option.label)); }; + useEffect(() => { + if (indexName && typeof indexName === 'string') setSelectedIndices([indexName]); + }, []); return ( @@ -72,7 +81,7 @@ export const CreateEngineFlyout = ({ onClose }: CreateEngineFlyoutProps) => {

{i18n.translate('xpack.enterpriseSearch.content.engines.createEngine.headerTitle', { - defaultMessage: 'Create an engine', + defaultMessage: 'Create a Search Application', })}

@@ -81,7 +90,7 @@ export const CreateEngineFlyout = ({ onClose }: CreateEngineFlyoutProps) => {

{ > {i18n.translate( 'xpack.enterpriseSearch.content.engines.createEngine.header.docsLink', - { defaultMessage: 'Engines documentation' } + { defaultMessage: 'Search Application documentation' } )} ), @@ -107,7 +116,7 @@ export const CreateEngineFlyout = ({ onClose }: CreateEngineFlyoutProps) => { color="danger" title={i18n.translate( 'xpack.enterpriseSearch.content.engines.createEngine.header.createError.title', - { defaultMessage: 'Error creating engine' } + { defaultMessage: 'Error creating search application' } )} > {getErrorsFromHttpResponse(createEngineError).map((errMessage, i) => ( @@ -126,7 +135,7 @@ export const CreateEngineFlyout = ({ onClose }: CreateEngineFlyoutProps) => { fullWidth isDisabled={formDisabled} onChange={onIndicesChange} - selectedOptions={selectedIndices.map(indexToOption)} + selectedOptions={selectedIndices.map((index: string) => indexToOption(index))} /> ), status: indicesStatus, @@ -142,7 +151,7 @@ export const CreateEngineFlyout = ({ onClose }: CreateEngineFlyoutProps) => { disabled={formDisabled} placeholder={i18n.translate( 'xpack.enterpriseSearch.content.engines.createEngine.nameEngine.placeholder', - { defaultMessage: 'Engine name' } + { defaultMessage: 'Search Application name' } )} value={engineName} onChange={(e) => setEngineName(e.target.value)} @@ -151,7 +160,7 @@ export const CreateEngineFlyout = ({ onClose }: CreateEngineFlyoutProps) => { status: engineNameStatus, title: i18n.translate( 'xpack.enterpriseSearch.content.engines.createEngine.nameEngine.title', - { defaultMessage: 'Name your engine' } + { defaultMessage: 'Name your Search Application' } ), }, ]} @@ -171,7 +180,7 @@ export const CreateEngineFlyout = ({ onClose }: CreateEngineFlyoutProps) => { { }} > {i18n.translate('xpack.enterpriseSearch.content.engines.createEngine.submit', { - defaultMessage: 'Create this engine', + defaultMessage: 'Create this Search Application', })} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/create_engine_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/create_engine_logic.test.ts index 0d88ca44ff87d..93bdda9c4a2d0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/create_engine_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/create_engine_logic.test.ts @@ -8,10 +8,12 @@ import { LogicMounter } from '../../../__mocks__/kea_logic'; import { Status } from '../../../../../common/types/api'; -import { ElasticsearchIndexWithIngestion } from '../../../../../common/types/indices'; +import { KibanaLogic } from '../../../shared/kibana'; import { CreateEngineApiLogic } from '../../api/engines/create_engine_api_logic'; +import { ENGINES_PATH } from '../../routes'; + import { CreateEngineLogic, CreateEngineLogicValues } from './create_engine_logic'; const DEFAULT_VALUES: CreateEngineLogicValues = { @@ -27,7 +29,7 @@ const DEFAULT_VALUES: CreateEngineLogicValues = { const VALID_ENGINE_NAME = 'unit-test-001'; const INVALID_ENGINE_NAME = 'TEST'; -const VALID_INDICES_DATA = [{ name: 'search-index-01' }] as ElasticsearchIndexWithIngestion[]; +const VALID_INDICES_DATA = ['search-index-01']; describe('CreateEngineLogic', () => { const { mount: apiLogicMount } = new LogicMounter(CreateEngineApiLogic); @@ -59,16 +61,17 @@ describe('CreateEngineLogic', () => { indices: ['search-index-01'], }); }); - it('engineCreated is handled', () => { + it('engineCreated is handled and is navigated to Search application list page', () => { jest.spyOn(CreateEngineLogic.actions, 'fetchEngines'); - jest.spyOn(CreateEngineLogic.actions, 'closeEngineCreate'); - + jest + .spyOn(KibanaLogic.values, 'navigateToUrl') + .mockImplementationOnce(() => Promise.resolve()); CreateEngineApiLogic.actions.apiSuccess({ result: 'created', }); + expect(KibanaLogic.values.navigateToUrl).toHaveBeenCalledWith(ENGINES_PATH); expect(CreateEngineLogic.actions.fetchEngines).toHaveBeenCalledTimes(1); - expect(CreateEngineLogic.actions.closeEngineCreate).toHaveBeenCalledTimes(1); }); }); describe('selectors', () => { @@ -114,7 +117,7 @@ describe('CreateEngineLogic', () => { it('returns true while create request in progress', () => { CreateEngineApiLogic.actions.makeRequest({ engineName: VALID_ENGINE_NAME, - indices: [VALID_INDICES_DATA[0].name], + indices: [VALID_INDICES_DATA[0]], }); expect(CreateEngineLogic.values.formDisabled).toEqual(true); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/create_engine_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/create_engine_logic.ts index 266dab05c5441..c939dda096446 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/create_engine_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/create_engine_logic.ts @@ -8,27 +8,27 @@ import { kea, MakeLogicType } from 'kea'; import { Status } from '../../../../../common/types/api'; -import { ElasticsearchIndexWithIngestion } from '../../../../../common/types/indices'; +import { KibanaLogic } from '../../../shared/kibana'; import { CreateEngineApiLogic, CreateEngineApiLogicActions, } from '../../api/engines/create_engine_api_logic'; +import { ENGINES_PATH } from '../../routes'; import { EnginesListLogic } from './engines_list_logic'; const NAME_VALIDATION = new RegExp(/^[a-z0-9\-]+$/); export interface CreateEngineLogicActions { - closeEngineCreate: () => void; createEngine: () => void; createEngineRequest: CreateEngineApiLogicActions['makeRequest']; engineCreateError: CreateEngineApiLogicActions['apiError']; engineCreated: CreateEngineApiLogicActions['apiSuccess']; fetchEngines: () => void; setEngineName: (engineName: string) => { engineName: string }; - setSelectedIndices: (indices: ElasticsearchIndexWithIngestion[]) => { - indices: ElasticsearchIndexWithIngestion[]; + setSelectedIndices: (indices: string[]) => { + indices: string[]; }; } @@ -40,7 +40,7 @@ export interface CreateEngineLogicValues { engineNameStatus: 'complete' | 'incomplete' | 'warning'; formDisabled: boolean; indicesStatus: 'complete' | 'incomplete'; - selectedIndices: ElasticsearchIndexWithIngestion[]; + selectedIndices: string[]; } export const CreateEngineLogic = kea< @@ -49,12 +49,12 @@ export const CreateEngineLogic = kea< actions: { createEngine: true, setEngineName: (engineName: string) => ({ engineName }), - setSelectedIndices: (indices: ElasticsearchIndexWithIngestion[]) => ({ indices }), + setSelectedIndices: (indices: string[]) => ({ indices }), }, connect: { actions: [ EnginesListLogic, - ['closeEngineCreate', 'fetchEngines'], + ['fetchEngines'], CreateEngineApiLogic, [ 'makeRequest as createEngineRequest', @@ -68,12 +68,12 @@ export const CreateEngineLogic = kea< createEngine: () => { actions.createEngineRequest({ engineName: values.engineName, - indices: values.selectedIndices.map((index) => index.name), + indices: values.selectedIndices, }); }, engineCreated: () => { actions.fetchEngines(); - actions.closeEngineCreate(); + KibanaLogic.values.navigateToUrl(ENGINES_PATH); }, }), path: ['enterprise_search', 'content', 'create_engine_logic'], diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/delete_engine_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/delete_engine_modal.tsx index 4203969bb74a2..46d7c8586ed80 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/delete_engine_modal.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/delete_engine_modal.tsx @@ -28,7 +28,7 @@ export const DeleteEngineModal: React.FC = ({ engineName return ( { @@ -42,7 +42,7 @@ export const DeleteEngineModal: React.FC = ({ engineName confirmButtonText={i18n.translate( 'xpack.enterpriseSearch.content.engineList.deleteEngineModal.confirmButton.title', { - defaultMessage: 'Yes, delete this engine ', + defaultMessage: 'Yes, delete this search application', } )} buttonColor="danger" @@ -53,7 +53,7 @@ export const DeleteEngineModal: React.FC = ({ engineName 'xpack.enterpriseSearch.content.engineList.deleteEngineModal.delete.description', { defaultMessage: - 'Deleting your engine is not a reversible action. Your indices will not be affected. ', + 'Deleting your search application is not a reversible action. Your indices will not be affected. ', } )}

diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/engines_list.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/engines_list.tsx index 7617467bba64f..48dce9f524164 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/engines_list.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/engines_list.tsx @@ -31,6 +31,7 @@ import { docLinks } from '../../../shared/doc_links'; import { KibanaLogic } from '../../../shared/kibana'; import { LicensingLogic } from '../../../shared/licensing'; import { EXPLORE_PLATINUM_FEATURES_LINK } from '../../../workplace_search/constants'; +import { ENGINES_PATH, ENGINE_CREATION_PATH } from '../../routes'; import { EnterpriseSearchEnginesPageTemplate } from '../layout/engines_page_template'; import { LicensingCallout, LICENSING_FEATURE } from '../shared/licensing_callout/licensing_callout'; @@ -43,9 +44,12 @@ import { EngineListIndicesFlyout } from './engines_list_flyout'; import { EnginesListFlyoutLogic } from './engines_list_flyout_logic'; import { EnginesListLogic } from './engines_list_logic'; -export const CreateEngineButton: React.FC<{ disabled: boolean }> = ({ disabled }) => { +interface CreateEngineButtonProps { + disabled: boolean; +} +export const CreateEngineButton: React.FC = ({ disabled }) => { const [showPopover, setShowPopover] = useState(false); - const { openEngineCreate } = useActions(EnginesListLogic); + return ( = ({ disabled } iconType="plusInCircle" data-test-subj="enterprise-search-content-engines-creation-button" data-telemetry-id="entSearchContent-engines-list-createEngine" - disabled={disabled} - onClick={openEngineCreate} + isDisabled={disabled} + onClick={() => KibanaLogic.values.navigateToUrl(ENGINE_CREATION_PATH)} > - {i18n.translate('xpack.enterpriseSearch.content.engines.createEngineButtonLabel', { - defaultMessage: 'Create Search Application', - })} + {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplications.createEngineButtonLabel', + { + defaultMessage: 'Create Search Application', + } + )} } > @@ -82,7 +89,7 @@ export const CreateEngineButton: React.FC<{ disabled: boolean }> = ({ disabled } @@ -94,27 +101,27 @@ export const CreateEngineButton: React.FC<{ disabled: boolean }> = ({ disabled } ); }; +interface ListProps { + createEngineFlyoutOpen?: boolean; +} -export const EnginesList: React.FC = () => { +export const EnginesList: React.FC = ({ createEngineFlyoutOpen }) => { const { closeDeleteEngineModal, - closeEngineCreate, fetchEngines, onPaginate, openDeleteEngineModal, setSearchQuery, setIsFirstRequest, } = useActions(EnginesListLogic); - const { openFetchEngineFlyout } = useActions(EnginesListFlyoutLogic); - const { isCloud } = useValues(KibanaLogic); + const { isCloud, navigateToUrl } = useValues(KibanaLogic); const { hasPlatinumLicense } = useValues(LicensingLogic); const isGated = !isCloud && !hasPlatinumLicense; const { - createEngineFlyoutOpen, deleteModalEngineName, hasNoEngines, isDeleteModalVisible, @@ -127,7 +134,7 @@ export const EnginesList: React.FC = () => { const throttledSearchQuery = useThrottle(searchQuery, INPUT_THROTTLE_DELAY_MS); useEffect(() => { - // Don't fetch engines if we don't have a valid license + // Don't fetch search applications if we don't have a valid license if (!isGated) { fetchEngines(); } @@ -148,18 +155,18 @@ export const EnginesList: React.FC = () => { ) : null} - {createEngineFlyoutOpen && } + {createEngineFlyoutOpen && navigateToUrl(ENGINES_PATH)} />} { target="_blank" data-telemetry-id="entSearchContent-engines-documentation-viewDocumentaion" > - {i18n.translate('xpack.enterpriseSearch.content.engines.documentation', { - defaultMessage: 'explore our Search Applications documentation', - })} + {i18n.translate( + 'xpack.enterpriseSearch.content.searchApplications.documentation', + { + defaultMessage: 'explore our Search Applications documentation', + } + )} ), }} /> ), - pageTitle: i18n.translate('xpack.enterpriseSearch.content.engines.title', { + pageTitle: i18n.translate('xpack.enterpriseSearch.content.searchApplications.title', { defaultMessage: 'Search Applications', }), rightSideItems: isLoading @@ -185,7 +195,7 @@ export const EnginesList: React.FC = () => { ? [] : [], }} - pageViewTelemetry="Engines" + pageViewTelemetry="Search Applications" isLoading={isLoading && !isGated} > {isGated && ( @@ -200,15 +210,15 @@ export const EnginesList: React.FC = () => { { {i18n.translate( - 'xpack.enterpriseSearch.content.engines.searchPlaceholder.description', + 'xpack.enterpriseSearch.content.searchApplications.searchPlaceholder.description', { - defaultMessage: 'Locate an engine via name or by its included indices.', + defaultMessage: + 'Locate a search application via name or by its included indices.', } )} @@ -230,7 +241,7 @@ export const EnginesList: React.FC = () => { { }); }); }); - describe('openEngineCreate', () => { - it('set createEngineFlyoutOpen to true', () => { - EnginesListLogic.actions.openEngineCreate(); - expect(EnginesListLogic.values).toEqual({ - ...DEFAULT_VALUES, - createEngineFlyoutOpen: true, - }); - }); - }); - describe('closeEngineCreate', () => { - it('set createEngineFlyoutOpen to false', () => { - EnginesListLogic.actions.closeEngineCreate(); - expect(EnginesListLogic.values).toEqual({ - ...DEFAULT_VALUES, - createEngineFlyoutOpen: false, - }); - }); - }); + describe('setSearchQuery', () => { it('set setSearchQuery to search value', () => { EnginesListLogic.actions.setSearchQuery('my-search-query'); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/engines_list_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/engines_list_logic.ts index 082747612698a..02ac44ae16c8d 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/engines_list_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/engines_list_logic.ts @@ -39,7 +39,7 @@ export type EnginesListActions = Pick< 'apiError' | 'apiSuccess' | 'makeRequest' > & { closeDeleteEngineModal(): void; - closeEngineCreate(): void; + deleteEngine: DeleteEnginesApiLogicActions['makeRequest']; deleteError: DeleteEnginesApiLogicActions['apiError']; deleteSuccess: DeleteEnginesApiLogicActions['apiSuccess']; @@ -50,13 +50,11 @@ export type EnginesListActions = Pick< openDeleteEngineModal: (engine: EnterpriseSearchEngine | EnterpriseSearchEngineDetails) => { engine: EnterpriseSearchEngine; }; - openEngineCreate(): void; setIsFirstRequest(): void; setSearchQuery(searchQuery: string): { searchQuery: string }; }; interface EngineListValues { - createEngineFlyoutOpen: boolean; data: typeof FetchEnginesAPILogic.values.data; deleteModalEngine: EnterpriseSearchEngine | null; deleteModalEngineName: string; @@ -76,11 +74,9 @@ interface EngineListValues { export const EnginesListLogic = kea>({ actions: { closeDeleteEngineModal: true, - closeEngineCreate: true, fetchEngines: true, onPaginate: (args: EuiBasicTableOnChange) => ({ pageNumber: args.page.index }), openDeleteEngineModal: (engine) => ({ engine }), - openEngineCreate: true, setIsFirstRequest: true, setSearchQuery: (searchQuery: string) => ({ searchQuery }), }, @@ -111,13 +107,6 @@ export const EnginesListLogic = kea ({ - createEngineFlyoutOpen: [ - false, - { - closeEngineCreate: () => false, - openEngineCreate: () => true, - }, - ], deleteModalEngine: [ null, { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/engines_router.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/engines_router.tsx index 662e1d7c21417..bcd5e5ec3bcd2 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/engines_router.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/engines/engines_router.tsx @@ -10,7 +10,7 @@ import { Switch } from 'react-router-dom'; import { Route } from '@kbn/shared-ux-router'; -import { ENGINES_PATH, ENGINE_PATH } from '../../routes'; +import { ENGINES_PATH, ENGINE_CREATION_PATH, ENGINE_PATH } from '../../routes'; import { EngineRouter } from '../engine/engine_router'; import { NotFound } from '../not_found'; @@ -23,6 +23,9 @@ export const EnginesRouter: React.FC = () => { + + + diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_index_created_toast.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_index_created_toast.tsx index f1d120dee4e46..ac5bb69706146 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_index_created_toast.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_index_created_toast.tsx @@ -5,37 +5,9 @@ * 2.0. */ -import React from 'react'; - -import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText } from '@elastic/eui'; - import { i18n } from '@kbn/i18n'; -import { APP_SEARCH_URL } from '../../../../../common/constants'; - import { flashSuccessToast } from '../../../shared/flash_messages'; -import { EuiButtonTo } from '../../../shared/react_router_helpers'; - -const SuccessToast = ( - <> - - {i18n.translate('xpack.enterpriseSearch.content.new_index.successToast.description', { - defaultMessage: - 'You can use App Search engines to build a search experience for your new Elasticsearch index.', - })} - - - - - - {i18n.translate('xpack.enterpriseSearch.content.new_index.successToast.button.label', { - defaultMessage: 'Create an engine', - })} - - - - -); export function flashIndexCreatedToast(): void { flashSuccessToast( @@ -44,7 +16,6 @@ export function flashIndexCreatedToast(): void { }), { iconType: 'cheer', - text: SuccessToast, } ); } diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/header_actions/create_engine_menu_item.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/header_actions/create_engine_menu_item.tsx index 61f090f8e20ad..059fa91c8ac0b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/header_actions/create_engine_menu_item.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/header_actions/create_engine_menu_item.tsx @@ -11,11 +11,11 @@ import { EuiContextMenuItem, EuiText, EuiFlexGroup, EuiFlexItem } from '@elastic import { i18n } from '@kbn/i18n'; -import { APP_SEARCH_PLUGIN } from '../../../../../../../common/constants'; -import { ENGINE_CREATION_PATH } from '../../../../../app_search/routes'; +import { ENTERPRISE_SEARCH_CONTENT_PLUGIN } from '../../../../../../../common/constants'; import { ESINDEX_QUERY_PARAMETER } from '../../../../../shared/constants'; import { generateEncodedPath } from '../../../../../shared/encode_path_params'; import { KibanaLogic } from '../../../../../shared/kibana'; +import { ENGINE_CREATION_PATH } from '../../../../routes'; export interface CreateEngineMenuItemProps { indexName?: string; @@ -28,12 +28,15 @@ export const CreateEngineMenuItem: React.FC = ({ ingestionMethod, isHiddenIndex, }) => { - const engineCreationPath = !indexName - ? `${APP_SEARCH_PLUGIN.URL}${ENGINE_CREATION_PATH}` - : generateEncodedPath(`${APP_SEARCH_PLUGIN.URL}${ENGINE_CREATION_PATH}?:indexKey=:indexName`, { - indexKey: ESINDEX_QUERY_PARAMETER, - indexName, - }); + const searchApplicationCreationPath = !indexName + ? `${ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL}${ENGINE_CREATION_PATH}` + : generateEncodedPath( + `${ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL}${ENGINE_CREATION_PATH}?:indexKey=:indexName`, + { + indexKey: ESINDEX_QUERY_PARAMETER, + indexName, + } + ); return ( @@ -43,7 +46,7 @@ export const CreateEngineMenuItem: React.FC = ({ size="s" icon="plusInCircle" onClick={() => { - KibanaLogic.values.navigateToUrl(engineCreationPath, { + KibanaLogic.values.navigateToUrl(searchApplicationCreationPath, { shouldNotCreateHref: true, }); }} @@ -51,9 +54,12 @@ export const CreateEngineMenuItem: React.FC = ({ >

- {i18n.translate('xpack.enterpriseSearch.content.index.searchEngines.createEngine', { - defaultMessage: 'Create an App Search engine', - })} + {i18n.translate( + 'xpack.enterpriseSearch.content.index.searchApplication.createSearchApplication', + { + defaultMessage: 'Create a Search Application', + } + )}

diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/header_actions/search_engines_popover.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/header_actions/search_engines_popover.tsx index 47584d3021ada..611c63c276750 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/header_actions/search_engines_popover.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/components/header_actions/search_engines_popover.tsx @@ -20,9 +20,11 @@ import { import { i18n } from '@kbn/i18n'; -import { APP_SEARCH_PLUGIN } from '../../../../../../../common/constants'; +import { ENTERPRISE_SEARCH_CONTENT_PLUGIN } from '../../../../../../../common/constants'; import { KibanaLogic } from '../../../../../shared/kibana'; +import { ENGINES_PATH } from '../../../../routes'; + import { CreateEngineMenuItem } from './create_engine_menu_item'; import { SearchEnginesPopoverLogic } from './search_engines_popover_logic'; @@ -52,7 +54,7 @@ export const SearchEnginesPopover: React.FC = ({ onClick={toggleSearchEnginesPopover} > {i18n.translate('xpack.enterpriseSearch.content.index.searchEngines.label', { - defaultMessage: 'Search engines', + defaultMessage: 'Search Applications', })} } @@ -64,15 +66,18 @@ export const SearchEnginesPopover: React.FC = ({ data-telemetry-id={`entSearchContent-${ingestionMethod}-header-searchEngines-viewEngines`} icon="eye" onClick={() => { - KibanaLogic.values.navigateToUrl(APP_SEARCH_PLUGIN.URL, { - shouldNotCreateHref: true, - }); + KibanaLogic.values.navigateToUrl( + ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL + ENGINES_PATH, + { + shouldNotCreateHref: true, + } + ); }} >

{i18n.translate('xpack.enterpriseSearch.content.index.searchEngines.viewEngines', { - defaultMessage: 'View App Search engines', + defaultMessage: 'View Search Applications', })}

@@ -82,7 +87,7 @@ export const SearchEnginesPopover: React.FC = ({ content={i18n.translate( 'xpack.enterpriseSearch.content.index.searchEngines.createEngineDisabledTooltip', { - defaultMessage: 'You cannot create engines from hidden indices.', + defaultMessage: 'You cannot create search applications from hidden indices.', } )} > diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_indices/delete_index_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_indices/delete_index_modal.tsx index 90e1da7c26eb2..38875821aeccf 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_indices/delete_index_modal.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_indices/delete_index_modal.tsx @@ -80,7 +80,7 @@ export const DeleteIndexModal: React.FC = () => { 'xpack.enterpriseSearch.content.searchIndices.deleteModal.delete.description', { defaultMessage: - 'Deleting this index will also delete all of its data and its {ingestionMethod} configuration. Any associated search engines will no longer be able to access any data stored in this index.', + 'Deleting this index will also delete all of its data and its {ingestionMethod} configuration. Any associated search applications will no longer be able to access any data stored in this index.', values: { ingestionMethod: ingestionMethodToText(ingestionMethod), }, diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 3e5b85ffcf0b4..cdfb1e09c6ae9 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -11131,8 +11131,6 @@ "xpack.enterpriseSearch.content.engine.indices.actions.viewIndex.caption": "Afficher l'index {indexName}", "xpack.enterpriseSearch.content.engineList.deleteEngine.successToast.title": "{engineName} a été supprimé", "xpack.enterpriseSearch.content.engines.createEngine.headerSubTitle": "Un moteur permet à vos utilisateurs d'interroger les données de vos index. Pour en savoir plus, explorez notre {enginesDocsLink} !", - "xpack.enterpriseSearch.content.engines.description": "Les moteurs vous permettent d'interroger les données indexées avec un ensemble complet d'outils de pertinence, d'analyse et de personnalisation. Pour en savoir plus sur le fonctionnement des moteurs dans Enterprise Search, {documentationUrl}", - "xpack.enterpriseSearch.content.engines.enginesList.description": "Affichage de {from}-{to} sur {total}", "xpack.enterpriseSearch.content.enginesList.indicesFlyout.subTitle": "Afficher les index associés à {engineName}", "xpack.enterpriseSearch.content.enginesList.table.column.view.indices": "{indicesCount, number} {indicesCount, plural, other {index}}", "xpack.enterpriseSearch.content.index.connector.syncRules.description": "Ajoutez une règle de synchronisation pour personnaliser les données qui sont synchronisées à partir de {indexName}. Tout est inclus par défaut, et les documents sont validés par rapport à l'ensemble des règles d'indexation configurées, en commençant par le haut de la liste.", @@ -12225,22 +12223,9 @@ "xpack.enterpriseSearch.content.engine.api.generateEngineApiKeyModal.done": "Terminé", "xpack.enterpriseSearch.content.engine.api.generateEngineApiKeyModal.generateButton": "Générer une clé en lecture seule", "xpack.enterpriseSearch.content.engine.api.generateEngineApiKeyModal.title": "Créer une clé d'API en lecture seule pour le moteur", - "xpack.enterpriseSearch.content.engine.api.step1.apiKeyWarning": "Elastic ne stocke pas les clés d’API. Une fois la clé générée, vous ne pourrez la visualiser qu'une seule fois. Veillez à l'enregistrer dans un endroit sûr. Si vous n'y avez plus accès, vous devrez générer une nouvelle clé d’API à partir de cet écran.", - "xpack.enterpriseSearch.content.engine.api.step1.createAPIKeyButton": "Créer une clé d'API", - "xpack.enterpriseSearch.content.engine.api.step1.learnMoreLink": "Découvrez plus d'informations sur les clés d'API.", - "xpack.enterpriseSearch.content.engine.api.step1.title": "Générer et enregistrer la clé d'API", - "xpack.enterpriseSearch.content.engine.api.step1.viewKeysButton": "Afficher les clés", - "xpack.enterpriseSearch.content.engine.api.step2.copyEndpointDescription": "Utilisez cette URL pour accéder aux points de terminaison d'API de votre moteur.", - "xpack.enterpriseSearch.content.engine.api.step2.title": "Copier le point de terminaison de votre moteur", "xpack.enterpriseSearch.content.engine.api.step3.curlTitle": "cURL", "xpack.enterpriseSearch.content.engine.api.step3.intro": "Découvrez comment effectuer l'intégration avec votre moteur à l'aide des clients de langage gérés par Elastic pour vous aider à créer votre expérience de recherche.", "xpack.enterpriseSearch.content.engine.api.step3.searchUITitle": "Search UI", - "xpack.enterpriseSearch.content.engine.api.step3.title": "Découvrir comment appeler vos points de terminaison", - "xpack.enterpriseSearch.content.engine.api.step4.copy": "Votre moteur fournit des données d'analyse de base dans le cadre de cette installation. Pour recevoir des indicateurs plus granulaires et personnalisés, intégrez notre script Behavioral Analytics dans votre plateforme.", - "xpack.enterpriseSearch.content.engine.api.step4.learnHowLink": "Découvrez comment faire", - "xpack.enterpriseSearch.content.engine.api.step4.title": "(Facultatif) Booster vos analyses", - "xpack.enterpriseSearch.content.engine.headerActions.actionsButton.ariaLabel": "Bouton de menu d'actions du moteur", - "xpack.enterpriseSearch.content.engine.headerActions.delete": "Supprimer ce moteur", "xpack.enterpriseSearch.content.engine.indices.actions.columnTitle": "Actions", "xpack.enterpriseSearch.content.engine.indices.actions.removeIndex.title": "Retirer cet index du moteur", "xpack.enterpriseSearch.content.engine.indices.actions.viewIndex.title": "Afficher cet index", @@ -12265,7 +12250,6 @@ "xpack.enterpriseSearch.content.engineList.deleteEngineModal.delete.description": "La suppression de votre moteur ne pourra pas être annulée. Vos index ne seront pas affectés. ", "xpack.enterpriseSearch.content.engineList.deleteEngineModal.title": "Supprimer définitivement ce moteur ?", "xpack.enterpriseSearch.content.engineList.table.column.actions.deleteEngineLabel": "Supprimer ce moteur", - "xpack.enterpriseSearch.content.engines.breadcrumb": "Moteurs", "xpack.enterpriseSearch.content.engines.createEngine.header.createError.title": "Erreur lors de la création du moteur", "xpack.enterpriseSearch.content.engines.createEngine.header.docsLink": "Documentation sur les moteurs", "xpack.enterpriseSearch.content.engines.createEngine.headerTitle": "Créer un moteur", @@ -12273,15 +12257,9 @@ "xpack.enterpriseSearch.content.engines.createEngine.nameEngine.title": "Nommer votre moteur", "xpack.enterpriseSearch.content.engines.createEngine.selectIndices.title": "Sélectionner les index", "xpack.enterpriseSearch.content.engines.createEngine.submit": "Créer ce moteur", - "xpack.enterpriseSearch.content.engines.createEngineButtonLabel": "Créer un moteur", - "xpack.enterpriseSearch.content.engines.documentation": "explorer notre documentation sur les moteurs", "xpack.enterpriseSearch.content.engines.enginesList.empty.description": "Lançons-nous dans la création de votre premier moteur.", "xpack.enterpriseSearch.content.engines.enginesList.empty.title": "Créer votre premier moteur", "xpack.enterpriseSearch.content.engines.indices.addIndicesFlyout.updateError.title": "Erreur lors de la mise à jour du moteur", - "xpack.enterpriseSearch.content.engines.searchBar.ariaLabel": "Moteurs de recherche", - "xpack.enterpriseSearch.content.engines.searchPlaceholder": "Moteurs de recherche", - "xpack.enterpriseSearch.content.engines.searchPlaceholder.description": "Localisez un moteur en fonction de son nom ou de ses index inclus.", - "xpack.enterpriseSearch.content.engines.title": "Moteurs", "xpack.enterpriseSearch.content.enginesList.indicesFlyout.table.docsCount.columnTitle": "Nombre de documents", "xpack.enterpriseSearch.content.enginesList.indicesFlyout.table.health.columnTitle": "Intégrité des index", "xpack.enterpriseSearch.content.enginesList.indicesFlyout.table.name.columnTitle": "Nom de l'index", @@ -12338,7 +12316,6 @@ "xpack.enterpriseSearch.content.index.pipelines.settings.reduceWhitespaceDescription": "Supprimer automatiquement l'espace supplémentaire de vos documents", "xpack.enterpriseSearch.content.index.pipelines.settings.reduceWhitespaceLabel": "Réduire l'espace", "xpack.enterpriseSearch.content.index.pipelines.settings.runMlInferenceDescrition": "Améliorer vos données à l'aide de modèles de ML entraînés compatibles", - "xpack.enterpriseSearch.content.index.searchEngines.createEngine": "Créer un moteur App Search", "xpack.enterpriseSearch.content.index.searchEngines.createEngineDisabledTooltip": "Vous ne pouvez pas créer de moteurs à partir d'index masqués.", "xpack.enterpriseSearch.content.index.searchEngines.label": "Moteurs de recherche", "xpack.enterpriseSearch.content.index.searchEngines.viewEngines": "Afficher les moteurs App Search", @@ -12617,8 +12594,6 @@ "xpack.enterpriseSearch.content.nativeConnectors.mongodb.name": "MongoDB", "xpack.enterpriseSearch.content.nativeConnectors.mysql.name": "MySQL", "xpack.enterpriseSearch.content.navTitle": "Contenu", - "xpack.enterpriseSearch.content.new_index.successToast.button.label": "Créer un moteur", - "xpack.enterpriseSearch.content.new_index.successToast.description": "Vous pouvez utiliser des moteurs App Search pour créer une expérience de recherche pour votre nouvel index Elasticsearch.", "xpack.enterpriseSearch.content.new_index.successToast.title": "Index créé avec succès", "xpack.enterpriseSearch.content.newIndex.breadcrumb": "Nouvel index de recherche", "xpack.enterpriseSearch.content.newIndex.emptyState.description": "Les données que vous ajoutez dans Enterprise Search sont appelées \"index de recherche\", et vous pouvez effectuer des recherches à l'intérieur à la fois dans App Search et dans Workplace Search. Maintenant, vous pouvez utiliser vos connecteurs dans App Search et vos robots d'indexation dans Workplace Search.", @@ -13039,8 +13014,6 @@ "xpack.enterpriseSearch.emailLabel": "E-mail", "xpack.enterpriseSearch.emptyState.description": "Votre contenu est stocké dans un index Elasticsearch. Commencez par créer un index Elasticsearch et sélectionnez une méthode d'ingestion. Les options comprennent le robot d'indexation Elastic, les intégrations de données tierces ou l'utilisation des points de terminaison d'API Elasticsearch.", "xpack.enterpriseSearch.emptyState.description.line2": "Qu’il s’agisse de créer une expérience de recherche avec App Search ou Elasticsearch, vous pouvez commencer ici.", - "xpack.enterpriseSearch.engines.engine.notFound.action1": "Retour aux moteurs", - "xpack.enterpriseSearch.engines.navTitle": "Moteurs", "xpack.enterpriseSearch.enterpriseSearch.setupGuide.description": "Effectuez des recherches sur tout, partout. Offrez à vos équipes débordées une expérience de recherche innovante et puissante facilement mise en œuvre. Intégrez rapidement une fonction de recherche préréglée à votre site web, à votre application ou à votre lieu de travail. Effectuez des recherches simples sur tout.", "xpack.enterpriseSearch.enterpriseSearch.setupGuide.notConfigured": "Enterprise Search n'est pas encore configuré dans votre instance Kibana.", "xpack.enterpriseSearch.enterpriseSearch.setupGuide.videoAlt": "Premiers pas avec Enterprise Search", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index ef49ea6ad1039..c3aae5c75beb8 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -11130,8 +11130,6 @@ "xpack.enterpriseSearch.content.engine.indices.actions.viewIndex.caption": "インデックス{indexName}を表示", "xpack.enterpriseSearch.content.engineList.deleteEngine.successToast.title": "{engineName}が削除されました。", "xpack.enterpriseSearch.content.engines.createEngine.headerSubTitle": "エンジンは、ユーザーがインデックス内のデータを照会することを可能にします。詳細については、{enginesDocsLink}を探索してください。", - "xpack.enterpriseSearch.content.engines.description": "エンジンは、関連性、分析、パーソナライゼーションツールの完全なセットで、インデックスされたデータを照会することを可能にします。エンタープライズサーチにおけるエンジンの仕組みについて詳しく知るには{documentationUrl}", - "xpack.enterpriseSearch.content.engines.enginesList.description": "{total}件中{from}-{to}件を表示中", "xpack.enterpriseSearch.content.enginesList.indicesFlyout.subTitle": "{engineName}に関連付けられたインデックスを表示", "xpack.enterpriseSearch.content.enginesList.table.column.view.indices": "{indicesCount, number} {indicesCount, plural, other {インデックス}}", "xpack.enterpriseSearch.content.index.connector.syncRules.description": "同期ルールを追加して、{indexName}から同期されるデータをカスタマイズします。デフォルトではすべてが含まれます。ドキュメントは、リストの最上位から下に向かって、構成されたインデックスルールのセットに対して検証されます。", @@ -12224,22 +12222,9 @@ "xpack.enterpriseSearch.content.engine.api.generateEngineApiKeyModal.done": "完了", "xpack.enterpriseSearch.content.engine.api.generateEngineApiKeyModal.generateButton": "読み取り専用キーを生成", "xpack.enterpriseSearch.content.engine.api.generateEngineApiKeyModal.title": "エンジン読み取り専用APIキーを作成", - "xpack.enterpriseSearch.content.engine.api.step1.apiKeyWarning": "ElasticはAPIキーを保存しません。生成後は、1回だけキーを表示できます。必ず安全に保管してください。アクセスできなくなった場合は、この画面から新しいAPIキーを生成する必要があります。", - "xpack.enterpriseSearch.content.engine.api.step1.createAPIKeyButton": "APIキーを作成", - "xpack.enterpriseSearch.content.engine.api.step1.learnMoreLink": "APIキーの詳細をご覧ください。", - "xpack.enterpriseSearch.content.engine.api.step1.title": "APIキーを生成して保存", - "xpack.enterpriseSearch.content.engine.api.step1.viewKeysButton": "キーを表示", - "xpack.enterpriseSearch.content.engine.api.step2.copyEndpointDescription": "このURLを使用して、エンジンのAPIエンドポイントにアクセスします。", - "xpack.enterpriseSearch.content.engine.api.step2.title": "エンジンのエンドポイントをコピー", "xpack.enterpriseSearch.content.engine.api.step3.curlTitle": "cURL", "xpack.enterpriseSearch.content.engine.api.step3.intro": "Elasticで管理されている言語クライアントが使用されたエンジンと統合し、検索エクスペリエンスを構築する方法をご覧ください。", "xpack.enterpriseSearch.content.engine.api.step3.searchUITitle": "Search UI", - "xpack.enterpriseSearch.content.engine.api.step3.title": "エンドポイントを呼び出す方法をご覧ください", - "xpack.enterpriseSearch.content.engine.api.step4.copy": "エンジンは、このインストールの一部として、基本分析データを提供します。さらに粒度の高いカスタムメトリックを利用するには、ご使用のプラットフォームで当社の行動分析を統合してください。", - "xpack.enterpriseSearch.content.engine.api.step4.learnHowLink": "方法を学習", - "xpack.enterpriseSearch.content.engine.api.step4.title": "(任意)分析を強化", - "xpack.enterpriseSearch.content.engine.headerActions.actionsButton.ariaLabel": "エンジンアクションメニューボタン", - "xpack.enterpriseSearch.content.engine.headerActions.delete": "このエンジンを削除", "xpack.enterpriseSearch.content.engine.indices.actions.columnTitle": "アクション", "xpack.enterpriseSearch.content.engine.indices.actions.removeIndex.title": "このインデックスをエンジンから削除", "xpack.enterpriseSearch.content.engine.indices.actions.viewIndex.title": "このインデックスを表示", @@ -12264,7 +12249,6 @@ "xpack.enterpriseSearch.content.engineList.deleteEngineModal.delete.description": "エンジンを削除すると、元に戻せません。インデックスには影響しません。", "xpack.enterpriseSearch.content.engineList.deleteEngineModal.title": "このエンジンを完全に削除しますか?", "xpack.enterpriseSearch.content.engineList.table.column.actions.deleteEngineLabel": "このエンジンを削除", - "xpack.enterpriseSearch.content.engines.breadcrumb": "エンジン", "xpack.enterpriseSearch.content.engines.createEngine.header.createError.title": "エンジンの作成エラー", "xpack.enterpriseSearch.content.engines.createEngine.header.docsLink": "エンジンドキュメント", "xpack.enterpriseSearch.content.engines.createEngine.headerTitle": "エンジンを作成", @@ -12272,15 +12256,9 @@ "xpack.enterpriseSearch.content.engines.createEngine.nameEngine.title": "エンジン名を指定", "xpack.enterpriseSearch.content.engines.createEngine.selectIndices.title": "インデックスを選択", "xpack.enterpriseSearch.content.engines.createEngine.submit": "このエンジンを削除", - "xpack.enterpriseSearch.content.engines.createEngineButtonLabel": "エンジンを作成", - "xpack.enterpriseSearch.content.engines.documentation": "エンジンドキュメントを読む", "xpack.enterpriseSearch.content.engines.enginesList.empty.description": "最初のエンジンの作成を説明します。", "xpack.enterpriseSearch.content.engines.enginesList.empty.title": "初めてのエンジンの作成", "xpack.enterpriseSearch.content.engines.indices.addIndicesFlyout.updateError.title": "エンジンの更新エラー", - "xpack.enterpriseSearch.content.engines.searchBar.ariaLabel": "検索エンジン", - "xpack.enterpriseSearch.content.engines.searchPlaceholder": "検索エンジン", - "xpack.enterpriseSearch.content.engines.searchPlaceholder.description": "名前または含まれているインデックスでエンジンを検索します。", - "xpack.enterpriseSearch.content.engines.title": "エンジン", "xpack.enterpriseSearch.content.enginesList.indicesFlyout.table.docsCount.columnTitle": "ドキュメント数", "xpack.enterpriseSearch.content.enginesList.indicesFlyout.table.health.columnTitle": "インデックス正常性", "xpack.enterpriseSearch.content.enginesList.indicesFlyout.table.name.columnTitle": "インデックス名", @@ -12337,7 +12315,6 @@ "xpack.enterpriseSearch.content.index.pipelines.settings.reduceWhitespaceDescription": "ドキュメントの不要な空白を自動的に削除", "xpack.enterpriseSearch.content.index.pipelines.settings.reduceWhitespaceLabel": "空白の削除", "xpack.enterpriseSearch.content.index.pipelines.settings.runMlInferenceDescrition": "互換性がある学習済みMLモデルを使用してデータを強化", - "xpack.enterpriseSearch.content.index.searchEngines.createEngine": "App Searchエンジンの作成", "xpack.enterpriseSearch.content.index.searchEngines.createEngineDisabledTooltip": "非表示のインデックスからエンジンを作成することはできません。", "xpack.enterpriseSearch.content.index.searchEngines.label": "検索エンジン", "xpack.enterpriseSearch.content.index.searchEngines.viewEngines": "App Searchエンジンを表示", @@ -12616,8 +12593,6 @@ "xpack.enterpriseSearch.content.nativeConnectors.mongodb.name": "MongoDB", "xpack.enterpriseSearch.content.nativeConnectors.mysql.name": "MySQL", "xpack.enterpriseSearch.content.navTitle": "コンテンツ", - "xpack.enterpriseSearch.content.new_index.successToast.button.label": "エンジンを作成", - "xpack.enterpriseSearch.content.new_index.successToast.description": "App Searchエンジンを使用して、新しいElasticsearchインデックスの検索エクスペリエンスを構築できます。", "xpack.enterpriseSearch.content.new_index.successToast.title": "インデックスが正常に作成されました", "xpack.enterpriseSearch.content.newIndex.breadcrumb": "新しい検索インデックス", "xpack.enterpriseSearch.content.newIndex.emptyState.description": "エンタープライズ サーチで追加したデータは検索インデックスと呼ばれ、App SearchとWorkplace Searchの両方で検索可能です。App SearchのコネクターとWorkplace SearchのWebクローラーを使用できます。", @@ -13038,8 +13013,6 @@ "xpack.enterpriseSearch.emailLabel": "メール", "xpack.enterpriseSearch.emptyState.description": "コンテンツはElasticsearchインデックスに保存されます。まず、Elasticsearchインデックスを作成し、インジェスチョン方法を選択します。オプションには、Elastic Webクローラー、サードパーティデータ統合、Elasticsearch APIエンドポイントの使用があります。", "xpack.enterpriseSearch.emptyState.description.line2": "App SearchまたはElasticsearchのどちらで検索エクスペリエンスを構築しても、これが最初のステップです。", - "xpack.enterpriseSearch.engines.engine.notFound.action1": "エンジンに戻る", - "xpack.enterpriseSearch.engines.navTitle": "エンジン", "xpack.enterpriseSearch.enterpriseSearch.setupGuide.description": "場所を問わず、何でも検索。組織を支える多忙なチームのために、パワフルでモダンな検索エクスペリエンスを簡単に導入できます。Webサイトやアプリ、ワークプレイスに事前調整済みの検索をすばやく追加しましょう。何でもシンプルに検索できます。", "xpack.enterpriseSearch.enterpriseSearch.setupGuide.notConfigured": "エンタープライズサーチはまだKibanaインスタンスで構成されていません。", "xpack.enterpriseSearch.enterpriseSearch.setupGuide.videoAlt": "エンタープライズ サーチの基本操作", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 589d923ae8ce1..84bdf7528d7ec 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -11131,8 +11131,6 @@ "xpack.enterpriseSearch.content.engine.indices.actions.viewIndex.caption": "查看索引 {indexName}", "xpack.enterpriseSearch.content.engineList.deleteEngine.successToast.title": "{engineName} 已删除", "xpack.enterpriseSearch.content.engines.createEngine.headerSubTitle": "引擎允许您的用户在索引中查询数据。请浏览我们的 {enginesDocsLink} 了解详情!", - "xpack.enterpriseSearch.content.engines.description": "引擎允许您通过一整套相关性、分析和个性化工具查询索引数据。有关引擎在 Enterprise Search 中的工作机制的详情,{documentationUrl}", - "xpack.enterpriseSearch.content.engines.enginesList.description": "正在显示第 {from}-{to} 个(共 {total} 个)", "xpack.enterpriseSearch.content.enginesList.indicesFlyout.subTitle": "查看与 {engineName} 关联的索引", "xpack.enterpriseSearch.content.enginesList.table.column.view.indices": "{indicesCount, number} 个{indicesCount, plural, other {索引}}", "xpack.enterpriseSearch.content.index.connector.syncRules.description": "添加同步规则以定制要从 {indexName} 同步哪些数据。默认包括所有内容,并根据从上到下列出的已配置索引规则集验证文档。", @@ -12225,22 +12223,9 @@ "xpack.enterpriseSearch.content.engine.api.generateEngineApiKeyModal.done": "完成", "xpack.enterpriseSearch.content.engine.api.generateEngineApiKeyModal.generateButton": "生成只读密钥", "xpack.enterpriseSearch.content.engine.api.generateEngineApiKeyModal.title": "创建引擎只读 API 密钥", - "xpack.enterpriseSearch.content.engine.api.step1.apiKeyWarning": "Elastic 不会存储 API 密钥。一旦生成,您只能查看密钥一次。请确保将其保存在某个安全位置。如果失去它的访问权限,您需要从此屏幕生成新的 API 密钥。", - "xpack.enterpriseSearch.content.engine.api.step1.createAPIKeyButton": "创建 API 密钥", - "xpack.enterpriseSearch.content.engine.api.step1.learnMoreLink": "详细了解 API 密钥。", - "xpack.enterpriseSearch.content.engine.api.step1.title": "生成并保存 API 密钥", - "xpack.enterpriseSearch.content.engine.api.step1.viewKeysButton": "查看密钥", - "xpack.enterpriseSearch.content.engine.api.step2.copyEndpointDescription": "使用此 URL 访问您引擎的 API 终端。", - "xpack.enterpriseSearch.content.engine.api.step2.title": "复制您引擎的终端", "xpack.enterpriseSearch.content.engine.api.step3.curlTitle": "cURL", "xpack.enterpriseSearch.content.engine.api.step3.intro": "了解如何将您的引擎与由 Elastic 维护的语言客户端进行集成,以帮助构建搜索体验。", "xpack.enterpriseSearch.content.engine.api.step3.searchUITitle": "搜索 UI", - "xpack.enterpriseSearch.content.engine.api.step3.title": "了解如何调用终端", - "xpack.enterpriseSearch.content.engine.api.step4.copy": "您的引擎作为此安装的一部分提供了基本分析数据。要接收更多粒度化的定制指标,请在您的平台上集成我们的行为分析脚本。", - "xpack.enterpriseSearch.content.engine.api.step4.learnHowLink": "了解操作方法", - "xpack.enterpriseSearch.content.engine.api.step4.title": "(可选)强化分析", - "xpack.enterpriseSearch.content.engine.headerActions.actionsButton.ariaLabel": "引擎操作菜单按钮", - "xpack.enterpriseSearch.content.engine.headerActions.delete": "删除此引擎", "xpack.enterpriseSearch.content.engine.indices.actions.columnTitle": "操作", "xpack.enterpriseSearch.content.engine.indices.actions.removeIndex.title": "从引擎中移除此索引", "xpack.enterpriseSearch.content.engine.indices.actions.viewIndex.title": "查看此索引", @@ -12265,7 +12250,6 @@ "xpack.enterpriseSearch.content.engineList.deleteEngineModal.delete.description": "删除引擎是不可逆操作。您的索引不会受到影响。", "xpack.enterpriseSearch.content.engineList.deleteEngineModal.title": "永久删除此引擎?", "xpack.enterpriseSearch.content.engineList.table.column.actions.deleteEngineLabel": "删除此引擎", - "xpack.enterpriseSearch.content.engines.breadcrumb": "引擎", "xpack.enterpriseSearch.content.engines.createEngine.header.createError.title": "创建引擎时出错", "xpack.enterpriseSearch.content.engines.createEngine.header.docsLink": "引擎文档", "xpack.enterpriseSearch.content.engines.createEngine.headerTitle": "创建引擎", @@ -12273,15 +12257,9 @@ "xpack.enterpriseSearch.content.engines.createEngine.nameEngine.title": "命名您的引擎", "xpack.enterpriseSearch.content.engines.createEngine.selectIndices.title": "选择索引", "xpack.enterpriseSearch.content.engines.createEngine.submit": "创建此引擎", - "xpack.enterpriseSearch.content.engines.createEngineButtonLabel": "创建引擎", - "xpack.enterpriseSearch.content.engines.documentation": "浏览我们的引擎文档", "xpack.enterpriseSearch.content.engines.enginesList.empty.description": "下面我们指导您创建首个引擎。", "xpack.enterpriseSearch.content.engines.enginesList.empty.title": "创建您的首个引擎", "xpack.enterpriseSearch.content.engines.indices.addIndicesFlyout.updateError.title": "更新引擎时出错", - "xpack.enterpriseSearch.content.engines.searchBar.ariaLabel": "搜索引擎", - "xpack.enterpriseSearch.content.engines.searchPlaceholder": "搜索引擎", - "xpack.enterpriseSearch.content.engines.searchPlaceholder.description": "通过名称或根据其包含的索引查找引擎。", - "xpack.enterpriseSearch.content.engines.title": "引擎", "xpack.enterpriseSearch.content.enginesList.indicesFlyout.table.docsCount.columnTitle": "文档计数", "xpack.enterpriseSearch.content.enginesList.indicesFlyout.table.health.columnTitle": "索引运行状况", "xpack.enterpriseSearch.content.enginesList.indicesFlyout.table.name.columnTitle": "索引名称", @@ -12338,7 +12316,6 @@ "xpack.enterpriseSearch.content.index.pipelines.settings.reduceWhitespaceDescription": "自动剪裁文档中的额外空白", "xpack.enterpriseSearch.content.index.pipelines.settings.reduceWhitespaceLabel": "减少空白", "xpack.enterpriseSearch.content.index.pipelines.settings.runMlInferenceDescrition": "使用兼容的已训练 ML 模型增强您的数据", - "xpack.enterpriseSearch.content.index.searchEngines.createEngine": "创建 App Search 引擎", "xpack.enterpriseSearch.content.index.searchEngines.createEngineDisabledTooltip": "无法从隐藏的索引中创建引擎。", "xpack.enterpriseSearch.content.index.searchEngines.label": "搜索引擎", "xpack.enterpriseSearch.content.index.searchEngines.viewEngines": "查看 App Search 引擎", @@ -12617,8 +12594,6 @@ "xpack.enterpriseSearch.content.nativeConnectors.mongodb.name": "MongoDB", "xpack.enterpriseSearch.content.nativeConnectors.mysql.name": "MySQL", "xpack.enterpriseSearch.content.navTitle": "内容", - "xpack.enterpriseSearch.content.new_index.successToast.button.label": "创建引擎", - "xpack.enterpriseSearch.content.new_index.successToast.description": "您可以使用 App Search 引擎为您的新 Elasticsearch 索引构建搜索体验。", "xpack.enterpriseSearch.content.new_index.successToast.title": "已成功创建索引", "xpack.enterpriseSearch.content.newIndex.breadcrumb": "新搜索索引", "xpack.enterpriseSearch.content.newIndex.emptyState.description": "您在 Enterprise Search 中添加的数据称为搜索索引,您可在 App Search 和 Workplace Search 中搜索这些数据。现在,您可以在 App Search 中使用连接器,在 Workplace Search 中使用网络爬虫。", @@ -13039,8 +13014,6 @@ "xpack.enterpriseSearch.emailLabel": "电子邮件", "xpack.enterpriseSearch.emptyState.description": "您的内容存储在 Elasticsearch 索引中。通过创建 Elasticsearch 索引并选择采集方法开始使用。选项包括 Elastic 网络爬虫、第三方数据集成或使用 Elasticsearch API 终端。", "xpack.enterpriseSearch.emptyState.description.line2": "无论是使用 App Search 还是 Elasticsearch 构建搜索体验,您都可以从此处立即开始。", - "xpack.enterpriseSearch.engines.engine.notFound.action1": "返回到引擎", - "xpack.enterpriseSearch.engines.navTitle": "引擎", "xpack.enterpriseSearch.enterpriseSearch.setupGuide.description": "随时随地进行全面搜索。为工作繁忙的团队轻松实现强大的现代搜索体验。将预先调整的搜索功能快速添加到您的网站、应用或工作区。全面搜索就是这么简单。", "xpack.enterpriseSearch.enterpriseSearch.setupGuide.notConfigured": "企业搜索尚未在您的 Kibana 实例中配置。", "xpack.enterpriseSearch.enterpriseSearch.setupGuide.videoAlt": "企业搜索入门",