From 17b608c8bbd5ace7661b051aba0fd5c9f076975a Mon Sep 17 00:00:00 2001 From: Julia Rechkunova Date: Wed, 26 Jul 2023 15:59:27 +0200 Subject: [PATCH] [Discover] Improve shard error message formatting (#161098) - Closes https://github.com/elastic/kibana/issues/156645 ## Summary This PR updates UI of shards error modal. ### Updated design Screenshot 2023-07-07 at 10 05 00 ![Jul-07-2023 10-20-13](https://github.com/elastic/kibana/assets/1415710/23069476-9aae-4c76-9e39-586a382dcf70) ### Before image 2 For testing, please follow instruction from https://github.com/elastic/kibana/pull/41649 and drop `targetfield` on Lens page. ### Checklist - [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 - [x] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [x] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) --------- Co-authored-by: Andrea Del Rio Co-authored-by: Stratoula Kalafateli --- .../shard_failure_description.test.tsx.snap | 332 +++++++++--------- .../shard_failure_modal.test.tsx.snap | 1 + .../shard_failure_table.test.tsx.snap | 69 ++-- .../_shard_failure_modal.scss | 28 +- .../shard_failure_description.test.tsx | 12 +- .../shard_failure_description.tsx | 104 +++++- .../shard_failure_description_header.tsx | 55 --- .../shard_failure_modal.tsx | 4 +- .../shard_failure_open_modal_button.tsx | 1 + .../shard_failure_table.tsx | 112 ++---- .../translations/translations/fr-FR.json | 6 - .../translations/translations/ja-JP.json | 6 - .../translations/translations/zh-CN.json | 6 - 13 files changed, 336 insertions(+), 400 deletions(-) delete mode 100644 src/plugins/data/public/shard_failure_modal/shard_failure_description_header.tsx diff --git a/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_description.test.tsx.snap b/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_description.test.tsx.snap index fca130dd3364066..56581d0f3f01910 100644 --- a/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_description.test.tsx.snap +++ b/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_description.test.tsx.snap @@ -1,192 +1,176 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`ShardFailureDescription renders matching snapshot given valid properties 1`] = ` -
- + + - - + + + + Show details + + + +`; + +exports[`ShardFailureDescription should show more details when button is pressed 1`] = ` + + + - return doc['targetfield'].value; + "className": "shardFailureModal__descValue", + } + } + gutterSize="s" + listItems={ + Array [ + Object { + "description": 0, + "title": "Shard", + }, + Object { + "description": "repro2", + "title": "Index", + }, + Object { + "description": "script_exception", + "title": "Type", + }, + Object { + "description": "itsmeyournode", + "title": "Node", + }, + Object { + "description": "runtime error", + "title": "Reason", + }, + Object { + "description": + return doc['targetfield'].value; ^---- HERE - , - "title": "Script stack", - }, - Object { - "description": - return doc['targetfield'].value; - , - "title": "Script", - }, - Object { - "description": "painless", - "title": "Lang", - }, - Object { - "description": "illegal_argument_exception", - "title": "Caused by type", - }, + , + "title": "Script stack", + }, + Object { + "description": + return doc['targetfield'].value; + , + "title": "Script", + }, + Object { + "description": "painless", + "title": "Lang", + }, + Object { + "description": "illegal_argument_exception", + "title": "Caused by type", + }, + Object { + "description": "Gimme reason", + "title": "Caused by reason", + }, + ] + } + titleProps={ Object { - "description": "Gimme reason", - "title": "Caused by reason", - }, - ] - } - titleProps={ + "className": "shardFailureModal__descTitle", + } + } + type="responsiveColumn" + /> + + -
+ grow={false} + > + + Show less + + + `; diff --git a/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_modal.test.tsx.snap b/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_modal.test.tsx.snap index d5bc9eabedaefa4..d9a1affafd9bdd0 100644 --- a/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_modal.test.tsx.snap +++ b/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_modal.test.tsx.snap @@ -5,6 +5,7 @@ exports[`ShardFailureModal renders matching snapshot given valid properties 1`] test diff --git a/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_table.test.tsx.snap b/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_table.test.tsx.snap index 257513f20fa94e5..f02d2c995f29e16 100644 --- a/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_table.test.tsx.snap +++ b/src/plugins/data/public/shard_failure_modal/__snapshots__/shard_failure_table.test.tsx.snap @@ -5,39 +5,50 @@ exports[`ShardFailureTable renders matching snapshot given valid properties 1`] columns={ Array [ Object { - "align": "right", - "isExpander": true, - "render": [Function], - "width": "40px", - }, - Object { - "field": "shard", - "name": "Shard", - "sortable": true, - "truncateText": true, - "width": "80px", - }, - Object { - "field": "index", - "name": "Index", - "sortable": true, - "truncateText": true, - }, - Object { - "field": "node", - "name": "Node", - "sortable": true, - "truncateText": true, - }, - Object { - "field": "reason.type", + "mobileOptions": Object { + "header": false, + }, "name": "Reason", - "truncateText": true, + "render": [Function], }, ] } + css={ + Object { + "map": undefined, + "name": "1vv0je1", + "next": undefined, + "styles": " + & .euiTableHeaderCell { + + /* Take the element out of the layout */ + position: absolute; + /* Keep it vertically inline */ + inset-block-start: auto; + /* Chrome requires a left value, and Selenium (used by Kibana's FTR) requires an off-screen position for its .getVisibleText() to not register SR-only text */ + inset-inline-start: -10000px; + /* The element must have a size (for some screen readers) */ + + inline-size: 1px; + block-size: 1px; + + /* But reduce the visible size to nothing */ + clip: rect(0 0 0 0); + clip-path: inset(50%); + /* And ensure no overflows occur */ + overflow: hidden; + /* Chrome requires the negative margin to not cause overflows of parent containers */ + margin: -1px; + + } + & .euiTableRowCell { + border-top: none; + } + ", + "toString": [Function], + } + } itemId="id" - itemIdToExpandedRowMap={Object {}} items={ Array [ Object { @@ -62,7 +73,7 @@ exports[`ShardFailureTable renders matching snapshot given valid properties 1`] }, ] } - pagination={true} + pagination={false} responsive={true} sorting={ Object { diff --git a/src/plugins/data/public/shard_failure_modal/_shard_failure_modal.scss b/src/plugins/data/public/shard_failure_modal/_shard_failure_modal.scss index ee3912098afae9f..0d428a5238248b3 100644 --- a/src/plugins/data/public/shard_failure_modal/_shard_failure_modal.scss +++ b/src/plugins/data/public/shard_failure_modal/_shard_failure_modal.scss @@ -2,6 +2,16 @@ .shardFailureModal { min-height: 75vh; width: 768px; + + // show buttons at the bottom of the modal + .kbnOverlayMountWrapper { + flex-grow: 1; + } + + // smaller gap between the modal title and body + .euiModalHeader { + padding-bottom: 0; + } } .shardFailureModal__desc { @@ -11,31 +21,19 @@ } .shardFailureModal__descTitle { - width: 20% !important; - margin-top: $euiSizeS; + width: 12% !important; } .shardFailureModal__descValue { - width: 80% !important; - margin-top: $euiSizeS; -} -.shardFailureModal__keyValueTitle { - padding-right: $euiSizeS; + width: 88% !important; } @include euiBreakpoint('xs','s') { - .shardFailureModal__keyValueTitle { - display: block; - width: 100%; - } - .shardFailureModal__descTitle { - display: block; width: 100% !important; } .shardFailureModal__descValue { - display: block; width: 100% !important; } -} \ No newline at end of file +} diff --git a/src/plugins/data/public/shard_failure_modal/shard_failure_description.test.tsx b/src/plugins/data/public/shard_failure_modal/shard_failure_description.test.tsx index 535b7ea66237bf8..9664ca1f9f99741 100644 --- a/src/plugins/data/public/shard_failure_modal/shard_failure_description.test.tsx +++ b/src/plugins/data/public/shard_failure_modal/shard_failure_description.test.tsx @@ -7,16 +7,22 @@ */ import React from 'react'; +import { EuiButtonEmpty } from '@elastic/eui'; import { shallowWithIntl } from '@kbn/test-jest-helpers'; import { ShardFailureDescription } from './shard_failure_description'; import { shardFailureResponse } from './__mocks__/shard_failure_response'; -import { ShardFailure } from './shard_failure_types'; describe('ShardFailureDescription', () => { it('renders matching snapshot given valid properties', () => { - // TODO: remove cast once https://github.com/elastic/elasticsearch-js/issues/1286 is resolved - const failure = (shardFailureResponse._shards as any).failures[0] as ShardFailure; + const failure = (shardFailureResponse._shards as any).failures[0]; const component = shallowWithIntl(); expect(component).toMatchSnapshot(); }); + + it('should show more details when button is pressed', async () => { + const failure = (shardFailureResponse._shards as any).failures[0]; + const component = shallowWithIntl(); + await component.find(EuiButtonEmpty).simulate('click'); + expect(component).toMatchSnapshot(); + }); }); diff --git a/src/plugins/data/public/shard_failure_modal/shard_failure_description.tsx b/src/plugins/data/public/shard_failure_modal/shard_failure_description.tsx index 1fd68bebf6060ff..1cb1cc3695ea013 100644 --- a/src/plugins/data/public/shard_failure_modal/shard_failure_description.tsx +++ b/src/plugins/data/public/shard_failure_modal/shard_failure_description.tsx @@ -6,11 +6,18 @@ * Side Public License, v 1. */ -import React from 'react'; +import React, { useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import { css } from '@emotion/react'; import { getFlattenedObject } from '@kbn/std'; -import { EuiCodeBlock, EuiDescriptionList, EuiSpacer } from '@elastic/eui'; +import { + EuiButtonEmpty, + EuiCodeBlock, + EuiDescriptionList, + EuiFlexGroup, + EuiFlexItem, +} from '@elastic/eui'; import { ShardFailure } from './shard_failure_types'; -import { ShardFailureDescriptionHeader } from './shard_failure_description_header'; /** * Provides pretty formatting of a given key string @@ -41,25 +48,84 @@ export function formatValueByKey(value: unknown, key: string): string | JSX.Elem } export function ShardFailureDescription(props: ShardFailure) { + const [showDetails, setShowDetails] = useState(false); + const flattendReason = getFlattenedObject(props.reason); - const listItems = Object.entries(flattendReason).map(([key, value]) => ({ - title: formatKey(key), - description: formatValueByKey(value, key), - })); + const reasonItems = Object.entries(flattendReason) + .filter(([key]) => key !== 'type') + .map(([key, value]) => ({ + title: formatKey(key), + description: formatValueByKey(value, key), + })); + + const items = [ + { + title: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.shardTitle', { + defaultMessage: 'Shard', + }), + description: props.shard, + }, + { + title: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.indexTitle', { + defaultMessage: 'Index', + }), + description: props.index, + }, + { + title: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.reasonTypeTitle', { + defaultMessage: 'Type', + }), + description: props.reason.type, + }, + ...(showDetails + ? [ + { + title: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.nodeTitle', { + defaultMessage: 'Node', + }), + description: props.node, + }, + ...reasonItems, + ] + : []), + ]; return ( -
- - - -
+ + + + + + setShowDetails((prev) => !prev)} flush="left"> + {showDetails + ? i18n.translate( + 'data.search.searchSource.fetch.shardsFailedModal.showLessButtonLabel', + { + defaultMessage: 'Show less', + } + ) + : i18n.translate( + 'data.search.searchSource.fetch.shardsFailedModal.showMoreButtonLabel', + { + defaultMessage: 'Show details', + } + )} + + + ); } diff --git a/src/plugins/data/public/shard_failure_modal/shard_failure_description_header.tsx b/src/plugins/data/public/shard_failure_modal/shard_failure_description_header.tsx deleted file mode 100644 index afed357c194c78b..000000000000000 --- a/src/plugins/data/public/shard_failure_modal/shard_failure_description_header.tsx +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React from 'react'; -import { EuiCode, EuiTitle } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { ShardFailure } from './shard_failure_types'; - -export function getFailurePropsForSummary( - failure: ShardFailure -): Array<{ key: string; value: string }> { - const failureDetailProps: Array = ['shard', 'index', 'node']; - return failureDetailProps - .filter((key) => typeof failure[key] === 'number' || typeof failure[key] === 'string') - .map((key) => ({ key, value: String(failure[key]) })); -} - -export function getFailureSummaryText(failure: ShardFailure, failureDetails?: string): string { - const failureName = failure.reason.type; - const displayDetails = - typeof failureDetails === 'string' ? failureDetails : getFailureSummaryDetailsText(failure); - - return i18n.translate('data.search.searchSource.fetch.shardsFailedModal.failureHeader', { - defaultMessage: '{failureName} at {failureDetails}', - values: { failureName, failureDetails: displayDetails }, - description: 'Summary of shard failures, e.g. "IllegalArgumentException at shard 0 node xyz"', - }); -} - -export function getFailureSummaryDetailsText(failure: ShardFailure): string { - return getFailurePropsForSummary(failure) - .map(({ key, value }) => `${key}: ${value}`) - .join(', '); -} - -export function ShardFailureDescriptionHeader(props: ShardFailure) { - const failureDetails = getFailurePropsForSummary(props).map((kv) => ( - - {kv.key} {kv.value} - - )); - return ( - -

- {getFailureSummaryText(props, '')} - {failureDetails} -

-
- ); -} diff --git a/src/plugins/data/public/shard_failure_modal/shard_failure_modal.tsx b/src/plugins/data/public/shard_failure_modal/shard_failure_modal.tsx index 01a060af1623dee..5dd7bebc2b77e0c 100644 --- a/src/plugins/data/public/shard_failure_modal/shard_failure_modal.tsx +++ b/src/plugins/data/public/shard_failure_modal/shard_failure_modal.tsx @@ -94,7 +94,9 @@ export function ShardFailureModal({ request, response, title, onClose }: Props) return ( - {title} + + {title} + diff --git a/src/plugins/data/public/shard_failure_modal/shard_failure_open_modal_button.tsx b/src/plugins/data/public/shard_failure_modal/shard_failure_open_modal_button.tsx index b3862690eef0183..922aee3f49483e4 100644 --- a/src/plugins/data/public/shard_failure_modal/shard_failure_open_modal_button.tsx +++ b/src/plugins/data/public/shard_failure_modal/shard_failure_open_modal_button.tsx @@ -15,6 +15,7 @@ import { toMountPoint } from '@kbn/kibana-react-plugin/public'; import { getOverlays } from '../services'; import { ShardFailureModal } from './shard_failure_modal'; import type { ShardFailureRequest } from './shard_failure_types'; +import './_shard_failure_modal.scss'; // @internal export interface ShardFailureOpenModalButtonProps { diff --git a/src/plugins/data/public/shard_failure_modal/shard_failure_table.tsx b/src/plugins/data/public/shard_failure_modal/shard_failure_table.tsx index 95b32b4d24dfa01..ab9c376157100d1 100644 --- a/src/plugins/data/public/shard_failure_modal/shard_failure_table.tsx +++ b/src/plugins/data/public/shard_failure_modal/shard_failure_table.tsx @@ -6,100 +6,38 @@ * Side Public License, v 1. */ -import React, { useState, ReactElement } from 'react'; -// @ts-ignore -import { EuiInMemoryTable, EuiButtonIcon } from '@elastic/eui'; -// @ts-ignore -import { RIGHT_ALIGNMENT } from '@elastic/eui/lib/services'; +import React from 'react'; import { i18n } from '@kbn/i18n'; +import { css } from '@emotion/react'; +import { EuiInMemoryTable, EuiInMemoryTableProps, euiScreenReaderOnly } from '@elastic/eui'; import { ShardFailureDescription } from './shard_failure_description'; import { ShardFailure } from './shard_failure_types'; -import { getFailureSummaryText } from './shard_failure_description_header'; export interface ListItem extends ShardFailure { id: string; } +const SORTING: EuiInMemoryTableProps['sorting'] = { + sort: { + field: 'index', + direction: 'desc', + }, +}; + export function ShardFailureTable({ failures }: { failures: ShardFailure[] }) { const itemList = failures.map((failure, idx) => ({ ...{ id: String(idx) }, ...failure })); - const initalMap = {} as Record; - - const [expandMap, setExpandMap] = useState(initalMap); const columns = [ { - align: RIGHT_ALIGNMENT, - width: '40px', - isExpander: true, - render: (item: ListItem) => { - const failureSummeryText = getFailureSummaryText(item); - const collapseLabel = i18n.translate( - 'data.search.searchSource.fetch.shardsFailedModal.tableRowCollapse', - { - defaultMessage: 'Collapse {rowDescription}', - description: 'Collapse a row of a table with failures', - values: { rowDescription: failureSummeryText }, - } - ); - - const expandLabel = i18n.translate( - 'data.search.searchSource.fetch.shardsFailedModal.tableRowExpand', - { - defaultMessage: 'Expand {rowDescription}', - description: 'Expand a row of a table with failures', - values: { rowDescription: failureSummeryText }, - } - ); - - return ( - { - // toggle displaying the expanded view of the given list item - const map = Object.assign({}, expandMap); - if (map[item.id]) { - delete map[item.id]; - } else { - map[item.id] = ; - } - setExpandMap(map); - }} - aria-label={expandMap[item.id] ? collapseLabel : expandLabel} - iconType={expandMap[item.id] ? 'arrowUp' : 'arrowDown'} - /> - ); - }, - }, - { - field: 'shard', - name: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.tableColShard', { - defaultMessage: 'Shard', - }), - sortable: true, - truncateText: true, - width: '80px', - }, - { - field: 'index', - name: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.tableColIndex', { - defaultMessage: 'Index', - }), - sortable: true, - truncateText: true, - }, - { - field: 'node', - name: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.tableColNode', { - defaultMessage: 'Node', - }), - sortable: true, - truncateText: true, - }, - { - field: 'reason.type', name: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.tableColReason', { defaultMessage: 'Reason', }), - truncateText: true, + render: (item: ListItem) => { + return ; + }, + mobileOptions: { + header: false, + }, }, ]; @@ -108,14 +46,16 @@ export function ShardFailureTable({ failures }: { failures: ShardFailure[] }) { itemId="id" items={itemList} columns={columns} - pagination={true} - sorting={{ - sort: { - field: 'index', - direction: 'desc', - }, - }} - itemIdToExpandedRowMap={expandMap} + pagination={itemList.length > 10} + sorting={SORTING} + css={css` + & .euiTableHeaderCell { + ${euiScreenReaderOnly()} + } + & .euiTableRowCell { + border-top: none; + } + `} /> ); } diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 455cf3d0ea65958..7aa5b13c6ad2343 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -1332,9 +1332,6 @@ "data.search.aggs.rareTerms.aggTypesLabel": "Termes rares de {fieldName}", "data.search.es_search.queryTimeValue": "{queryTime} ms", "data.search.functions.geoBoundingBox.arguments.error": "Au moins un des groupes de paramètres suivants doit être fourni : {parameters}.", - "data.search.searchSource.fetch.shardsFailedModal.failureHeader": "{failureName} à {failureDetails}", - "data.search.searchSource.fetch.shardsFailedModal.tableRowCollapse": "Réduire {rowDescription}", - "data.search.searchSource.fetch.shardsFailedModal.tableRowExpand": "Développer {rowDescription}", "data.search.searchSource.fetch.shardsFailedNotificationMessage": "Échec de {shardsFailed} des {shardsTotal} partitions", "data.search.searchSource.indexPatternIdDescription": "ID dans l'index {kibanaIndexPattern}.", "data.search.searchSource.queryTimeValue": "{queryTime} ms", @@ -2089,10 +2086,7 @@ "data.search.searchSource.fetch.shardsFailedModal.tabHeaderRequest": "Requête", "data.search.searchSource.fetch.shardsFailedModal.tabHeaderResponse": "Réponse", "data.search.searchSource.fetch.shardsFailedModal.tabHeaderShardFailures": "Échecs de partition", - "data.search.searchSource.fetch.shardsFailedModal.tableColIndex": "Index", - "data.search.searchSource.fetch.shardsFailedModal.tableColNode": "Nœud", "data.search.searchSource.fetch.shardsFailedModal.tableColReason": "Raison", - "data.search.searchSource.fetch.shardsFailedModal.tableColShard": "Partition", "data.search.searchSource.fetch.shardsFailedNotificationDescription": "Les données peuvent être incomplètes ou erronées.", "data.search.searchSource.hitsDescription": "Le nombre de documents renvoyés par la requête.", "data.search.searchSource.hitsLabel": "Résultats", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index a4f6bcbe4ae83f5..8016c2a72f783d7 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -1346,9 +1346,6 @@ "data.search.aggs.rareTerms.aggTypesLabel": "{fieldName}の希少な用語", "data.search.es_search.queryTimeValue": "{queryTime}ms", "data.search.functions.geoBoundingBox.arguments.error": "次のパラメーターのグループの1つ以上を指定する必要があります:{parameters}。", - "data.search.searchSource.fetch.shardsFailedModal.failureHeader": "{failureDetails}の{failureName}", - "data.search.searchSource.fetch.shardsFailedModal.tableRowCollapse": "{rowDescription}を折りたたむ", - "data.search.searchSource.fetch.shardsFailedModal.tableRowExpand": "{rowDescription}を展開", "data.search.searchSource.fetch.shardsFailedNotificationMessage": "{shardsTotal}件中{shardsFailed}件のシャードでエラーが発生しました", "data.search.searchSource.indexPatternIdDescription": "{kibanaIndexPattern}インデックス内のIDです。", "data.search.searchSource.queryTimeValue": "{queryTime}ms", @@ -2103,10 +2100,7 @@ "data.search.searchSource.fetch.shardsFailedModal.tabHeaderRequest": "リクエスト", "data.search.searchSource.fetch.shardsFailedModal.tabHeaderResponse": "応答", "data.search.searchSource.fetch.shardsFailedModal.tabHeaderShardFailures": "シャードエラー", - "data.search.searchSource.fetch.shardsFailedModal.tableColIndex": "インデックス", - "data.search.searchSource.fetch.shardsFailedModal.tableColNode": "ノード", "data.search.searchSource.fetch.shardsFailedModal.tableColReason": "理由", - "data.search.searchSource.fetch.shardsFailedModal.tableColShard": "シャード", "data.search.searchSource.fetch.shardsFailedNotificationDescription": "データが不完全か誤りの可能性があります。", "data.search.searchSource.hitsDescription": "クエリにより返されたドキュメントの数です。", "data.search.searchSource.hitsLabel": "ヒット数", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 6d85cdcb15e6e15..56692fd18cfabfb 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -1346,9 +1346,6 @@ "data.search.aggs.rareTerms.aggTypesLabel": "{fieldName} 的稀有词", "data.search.es_search.queryTimeValue": "{queryTime}ms", "data.search.functions.geoBoundingBox.arguments.error": "必须至少提供一个以下参数组:{parameters}。", - "data.search.searchSource.fetch.shardsFailedModal.failureHeader": "{failureName}于{failureDetails}", - "data.search.searchSource.fetch.shardsFailedModal.tableRowCollapse": "折叠 {rowDescription}", - "data.search.searchSource.fetch.shardsFailedModal.tableRowExpand": "展开 {rowDescription}", "data.search.searchSource.fetch.shardsFailedNotificationMessage": "{shardsTotal} 个分片有 {shardsFailed} 个失败", "data.search.searchSource.indexPatternIdDescription": "{kibanaIndexPattern} 索引中的 ID。", "data.search.searchSource.queryTimeValue": "{queryTime}ms", @@ -2103,10 +2100,7 @@ "data.search.searchSource.fetch.shardsFailedModal.tabHeaderRequest": "请求", "data.search.searchSource.fetch.shardsFailedModal.tabHeaderResponse": "响应", "data.search.searchSource.fetch.shardsFailedModal.tabHeaderShardFailures": "分片错误", - "data.search.searchSource.fetch.shardsFailedModal.tableColIndex": "索引", - "data.search.searchSource.fetch.shardsFailedModal.tableColNode": "节点", "data.search.searchSource.fetch.shardsFailedModal.tableColReason": "原因", - "data.search.searchSource.fetch.shardsFailedModal.tableColShard": "分片", "data.search.searchSource.fetch.shardsFailedNotificationDescription": "数据可能不完整或有错误。", "data.search.searchSource.hitsDescription": "查询返回的文档数目。", "data.search.searchSource.hitsLabel": "命中数",