[Fleet][UI] Remove experimental indexing toggles (#160642)

Part of https://github.com/elastic/kibana/issues/155516

## Summary

* Remove experimental indexing toggles in Fleet UI
* Remove `experimentalDataStreamSettings` feature flag which is gating
these toggles

## Screenshots

### Before

![Screenshot 2023-06-27 at 12 03
13](4ed94091-8fe2-4ecd-9ace-c1cdb4ed4057)

### After

![Screenshot 2023-06-27 at 17 15
48](cac7f266-5660-48a6-9c06-722ceb806bd3)
This commit is contained in:
Jill Guyonnet 2023-06-29 10:15:04 +02:00 committed by GitHub
parent e8e181caf0
commit 10acc6cf67
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 1 additions and 594 deletions

View file

@ -16,7 +16,6 @@ export const allowedExperimentalValues = Object.freeze({
packageVerification: true,
showDevtoolsRequest: true,
diagnosticFileUploadEnabled: true,
experimentalDataStreamSettings: false,
displayAgentMetrics: true,
showIntegrationsSubcategories: true,
agentFqdnMode: true,

View file

@ -1,260 +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 from 'react';
import { act, fireEvent } from '@testing-library/react';
import { createFleetTestRendererMock } from '../../../../../../../../mock';
import type { RegistryDataStream } from '../../../../../../../../../common/types';
import { ExperimentDatastreamSettings } from './experimental_datastream_settings';
describe('ExperimentDatastreamSettings', () => {
describe('Synthetic source', () => {
it('should be enabled an not checked by default', () => {
const mockSetNewExperimentalDataFeatures = jest.fn();
const res = createFleetTestRendererMock().render(
<ExperimentDatastreamSettings
registryDataStream={{ type: 'logs', dataset: 'test' } as unknown as RegistryDataStream}
experimentalDataFeatures={[]}
setNewExperimentalDataFeatures={mockSetNewExperimentalDataFeatures}
/>
);
const syntheticSourceSwitch = res.getByTestId(
'packagePolicyEditor.syntheticSourceExperimentalFeature.switch'
);
expect(syntheticSourceSwitch).not.toBeChecked();
expect(syntheticSourceSwitch).toBeEnabled();
expect(mockSetNewExperimentalDataFeatures).not.toBeCalled();
});
it('should be checked if the regitry datastream define source_mode synthetic', () => {
const mockSetNewExperimentalDataFeatures = jest.fn();
const res = createFleetTestRendererMock().render(
<ExperimentDatastreamSettings
registryDataStream={
{
type: 'logs',
dataset: 'test',
elasticsearch: {
source_mode: 'synthetic',
},
} as unknown as RegistryDataStream
}
experimentalDataFeatures={[]}
setNewExperimentalDataFeatures={mockSetNewExperimentalDataFeatures}
/>
);
const syntheticSourceSwitch = res.getByTestId(
'packagePolicyEditor.syntheticSourceExperimentalFeature.switch'
);
expect(syntheticSourceSwitch).toBeChecked();
expect(syntheticSourceSwitch).toBeEnabled();
expect(mockSetNewExperimentalDataFeatures).not.toBeCalled();
});
it('should be not checked and disabled if the regitry datastream define source_mode synthetic and the user disabled it', () => {
const mockSetNewExperimentalDataFeatures = jest.fn();
const res = createFleetTestRendererMock().render(
<ExperimentDatastreamSettings
registryDataStream={
{
type: 'logs',
dataset: 'test',
elasticsearch: {
source_mode: 'synthetic',
},
} as unknown as RegistryDataStream
}
experimentalDataFeatures={[
{
data_stream: 'logs-test',
features: {
synthetic_source: false,
tsdb: false,
doc_value_only_numeric: false,
doc_value_only_other: false,
},
},
]}
setNewExperimentalDataFeatures={mockSetNewExperimentalDataFeatures}
/>
);
const syntheticSourceSwitch = res.getByTestId(
'packagePolicyEditor.syntheticSourceExperimentalFeature.switch'
);
expect(syntheticSourceSwitch).not.toBeChecked();
expect(syntheticSourceSwitch).toBeEnabled();
expect(mockSetNewExperimentalDataFeatures).not.toBeCalled();
});
it('should not be checked and not enabled if the regitry datastream define source_mode default', () => {
const mockSetNewExperimentalDataFeatures = jest.fn();
const res = createFleetTestRendererMock().render(
<ExperimentDatastreamSettings
registryDataStream={
{
type: 'logs',
dataset: 'test',
elasticsearch: {
source_mode: 'default',
},
} as unknown as RegistryDataStream
}
experimentalDataFeatures={[]}
setNewExperimentalDataFeatures={mockSetNewExperimentalDataFeatures}
/>
);
const syntheticSourceSwitch = res.getByTestId(
'packagePolicyEditor.syntheticSourceExperimentalFeature.switch'
);
expect(syntheticSourceSwitch).not.toBeChecked();
expect(syntheticSourceSwitch).not.toBeEnabled();
expect(mockSetNewExperimentalDataFeatures).not.toBeCalled();
});
it('should not mutate original experimental feature if a user change one', () => {
const mockSetNewExperimentalDataFeatures = jest.fn();
const experimentalDataFeatures = [
{
data_stream: 'logs-test',
features: {
synthetic_source: true,
tsdb: false,
doc_value_only_numeric: false,
doc_value_only_other: false,
},
},
];
const res = createFleetTestRendererMock().render(
<ExperimentDatastreamSettings
registryDataStream={
{
type: 'logs',
dataset: 'test',
} as unknown as RegistryDataStream
}
experimentalDataFeatures={experimentalDataFeatures}
setNewExperimentalDataFeatures={mockSetNewExperimentalDataFeatures}
/>
);
act(() => {
fireEvent.click(
res.getByTestId('packagePolicyEditor.syntheticSourceExperimentalFeature.switch')
);
});
expect(mockSetNewExperimentalDataFeatures).toBeCalled();
expect(mockSetNewExperimentalDataFeatures.mock.calls[0][0]).toEqual([
{
data_stream: 'logs-test',
features: {
synthetic_source: false,
tsdb: false,
doc_value_only_numeric: false,
doc_value_only_other: false,
},
},
]);
});
});
describe('TSDB', () => {
it('should be enabled and unchecked by default', () => {
const mockSetNewExperimentalDataFeatures = jest.fn();
const res = createFleetTestRendererMock().render(
<ExperimentDatastreamSettings
registryDataStream={{ type: 'logs', dataset: 'test' } as unknown as RegistryDataStream}
experimentalDataFeatures={[]}
setNewExperimentalDataFeatures={mockSetNewExperimentalDataFeatures}
/>
);
const tsdbSwitch = res.getByTestId('packagePolicyEditor.tsdbExperimentalFeature.switch');
expect(tsdbSwitch).toBeEnabled();
expect(tsdbSwitch).not.toBeChecked();
expect(mockSetNewExperimentalDataFeatures).not.toBeCalled();
});
it('should be disabled and checked with a tooltip if registry data streams includes "elasticsearch.index_mode: time_series"', () => {
const mockSetNewExperimentalDataFeatures = jest.fn();
const res = createFleetTestRendererMock().render(
<ExperimentDatastreamSettings
registryDataStream={
{
type: 'logs',
dataset: 'test',
elasticsearch: {
index_mode: 'time_series',
},
} as unknown as RegistryDataStream
}
experimentalDataFeatures={[]}
setNewExperimentalDataFeatures={mockSetNewExperimentalDataFeatures}
/>
);
const tsdbSwitch = res.getByTestId(
'packagePolicyEditor.tsdbExperimentalFeature.switchTooltip'
);
expect(tsdbSwitch).toBeDisabled();
expect(tsdbSwitch).toBeChecked();
expect(mockSetNewExperimentalDataFeatures).not.toBeCalled();
});
it('should not mutate other experimental features when changed', () => {
const experimentalDataFeatures = [
{
data_stream: 'logs-test',
features: {
doc_value_only_numeric: false,
doc_value_only_other: false,
synthetic_source: true,
tsdb: false,
},
},
];
const mockSetNewExperimentalDataFeatures = jest.fn();
const res = createFleetTestRendererMock().render(
<ExperimentDatastreamSettings
registryDataStream={
{
type: 'logs',
dataset: 'test',
} as unknown as RegistryDataStream
}
experimentalDataFeatures={experimentalDataFeatures}
setNewExperimentalDataFeatures={mockSetNewExperimentalDataFeatures}
/>
);
act(() => {
fireEvent.click(res.getByTestId('packagePolicyEditor.tsdbExperimentalFeature.switch'));
});
expect(mockSetNewExperimentalDataFeatures).toBeCalled();
expect(mockSetNewExperimentalDataFeatures.mock.calls[0][0]).toEqual([
{
data_stream: 'logs-test',
features: {
doc_value_only_numeric: false,
doc_value_only_other: false,
synthetic_source: true,
tsdb: true,
},
},
]);
});
});
});

View file

@ -1,277 +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 from 'react';
import { FormattedMessage } from '@kbn/i18n-react';
import {
EuiFlexGroup,
EuiFlexItem,
EuiSwitch,
EuiText,
EuiSpacer,
EuiTitle,
EuiLink,
EuiIconTip,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { useStartServices } from '../../../../../../../../hooks';
import type {
ExperimentalDataStreamFeature,
RegistryDataStream,
} from '../../../../../../../../../common/types';
import { getRegistryDataStreamAssetBaseName } from '../../../../../../../../../common/services';
import type { ExperimentalIndexingFeature } from '../../../../../../../../../common/types/models/epm';
interface Props {
registryDataStream: RegistryDataStream;
experimentalDataFeatures?: ExperimentalDataStreamFeature[];
setNewExperimentalDataFeatures: (
experimentalDataFeatures: ExperimentalDataStreamFeature[]
) => void;
}
function getExperimentalFeatureValue(
feature: ExperimentalIndexingFeature,
experimentalDataFeatures: ExperimentalDataStreamFeature[],
registryDataStream: RegistryDataStream
) {
return experimentalDataFeatures?.find(
({ data_stream: dataStream, features }) =>
dataStream === getRegistryDataStreamAssetBaseName(registryDataStream) &&
typeof features[feature] !== 'undefined'
)?.features?.[feature];
}
export const ExperimentDatastreamSettings: React.FunctionComponent<Props> = ({
registryDataStream,
experimentalDataFeatures,
setNewExperimentalDataFeatures,
}) => {
const { docLinks } = useStartServices();
const isSyntheticSourceEditable = registryDataStream.elasticsearch?.source_mode !== 'default';
const syntheticSourceExperimentalValue = getExperimentalFeatureValue(
'synthetic_source',
experimentalDataFeatures ?? [],
registryDataStream
);
const isTimeSeriesEnabledByDefault =
registryDataStream.elasticsearch?.index_mode === 'time_series';
const isSyntheticSourceEnabledByDefault =
registryDataStream.elasticsearch?.source_mode === 'synthetic' || isTimeSeriesEnabledByDefault;
const docValueOnlyNumericExperimentalValue = getExperimentalFeatureValue(
'doc_value_only_numeric',
experimentalDataFeatures ?? [],
registryDataStream
);
const docValueOnlyOtherExperimentalValue = getExperimentalFeatureValue(
'doc_value_only_other',
experimentalDataFeatures ?? [],
registryDataStream
);
const newExperimentalIndexingFeature = {
synthetic_source:
typeof syntheticSourceExperimentalValue !== 'undefined'
? syntheticSourceExperimentalValue
: isSyntheticSourceEnabledByDefault,
tsdb: isTimeSeriesEnabledByDefault
? isTimeSeriesEnabledByDefault
: getExperimentalFeatureValue('tsdb', experimentalDataFeatures ?? [], registryDataStream) ??
false,
doc_value_only_numeric:
typeof docValueOnlyNumericExperimentalValue !== 'undefined'
? docValueOnlyNumericExperimentalValue
: false,
doc_value_only_other:
typeof docValueOnlyOtherExperimentalValue !== 'undefined'
? docValueOnlyOtherExperimentalValue
: false,
};
const onIndexingSettingChange = (
features: Partial<Record<ExperimentalIndexingFeature, boolean>>
) => {
const newExperimentalDataStreamFeatures =
experimentalDataFeatures?.map((feature) => ({ ...feature })) ?? [];
const dataStream = getRegistryDataStreamAssetBaseName(registryDataStream);
const existingSettingRecord = newExperimentalDataStreamFeatures.find(
(x) => x.data_stream === dataStream
);
if (existingSettingRecord) {
existingSettingRecord.features = {
...existingSettingRecord.features,
...features,
};
} else {
newExperimentalDataStreamFeatures.push({
data_stream: dataStream,
features: { ...newExperimentalIndexingFeature, ...features },
});
}
setNewExperimentalDataFeatures(newExperimentalDataStreamFeatures);
};
return (
<EuiFlexItem>
<EuiFlexGroup direction="column" gutterSize="xs">
<EuiFlexItem grow={false}>
<EuiTitle size="xxxs">
<h5>
<FormattedMessage
id="xpack.fleet.packagePolicyEditor.experimentalSettings.title"
defaultMessage="Indexing settings (technical preview)"
/>
</h5>
</EuiTitle>
</EuiFlexItem>
<EuiFlexItem>
<EuiText color="subdued" size="xs">
<p>
<FormattedMessage
id="xpack.fleet.packagePolicyEditor.stepConfigure.experimentalFeaturesDescription"
defaultMessage="Choose how you want to store backing indices for this data stream. Changing these settings may affect other properties."
/>
</p>
<p>
<FormattedMessage
id="xpack.fleet.packagePolicyEditor.stepConfigure.experimentalFeaturesRolloverWarning"
defaultMessage="After changing these settings, you need to manually roll over the existing data stream for changes to take effect. {learnMoreLink}"
values={{
learnMoreLink: (
<EuiLink href={docLinks.links.fleet.datastreamsManualRollover} target="_blank">
{i18n.translate(
'xpack.fleet.packagePolicyEditor.experimentalFeatureRolloverLearnMore',
{ defaultMessage: 'Learn more' }
)}
</EuiLink>
),
}}
/>
</p>
</EuiText>
</EuiFlexItem>
<EuiSpacer size="s" />
<EuiFlexItem>
<EuiSwitch
checked={newExperimentalIndexingFeature.synthetic_source ?? false}
disabled={!isSyntheticSourceEditable}
data-test-subj="packagePolicyEditor.syntheticSourceExperimentalFeature.switch"
label={
<FormattedMessage
id="xpack.fleet.packagePolicyEditor.experimentalFeatures.syntheticSourceLabel"
defaultMessage="Synthetic source"
/>
}
onChange={(e) => {
onIndexingSettingChange({
synthetic_source: e.target.checked,
});
}}
/>
</EuiFlexItem>
<EuiFlexItem>
{isTimeSeriesEnabledByDefault ? (
<EuiFlexGroup>
<EuiFlexItem grow={false}>
<EuiSwitch
checked={newExperimentalIndexingFeature.tsdb ?? false}
disabled={true}
data-test-subj="packagePolicyEditor.tsdbExperimentalFeature.switchTooltip"
label={
<FormattedMessage
id="xpack.fleet.packagePolicyEditor.experimentalFeatures.TSDBLabel"
defaultMessage="Time-series database (TSDB) indexing"
/>
}
onChange={(e) => {
onIndexingSettingChange({
tsdb: e.target.checked,
});
}}
/>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiIconTip
content={i18n.translate(
'xpack.fleet.packagePolicyEditor.experimentalFeatures.tooltip',
{
defaultMessage: 'TSDB indexing is enabled by the integration',
}
)}
position="right"
data-test-subj="foo"
/>
</EuiFlexItem>
</EuiFlexGroup>
) : (
<EuiSwitch
checked={newExperimentalIndexingFeature.tsdb ?? false}
data-test-subj="packagePolicyEditor.tsdbExperimentalFeature.switch"
label={
<FormattedMessage
id="xpack.fleet.packagePolicyEditor.experimentalFeatures.TSDBLabel"
defaultMessage="Time-series database (TSDB) indexing"
/>
}
onChange={(e) => {
onIndexingSettingChange({
tsdb: e.target.checked,
});
}}
/>
)}
</EuiFlexItem>
<EuiFlexItem>
<EuiSwitch
checked={newExperimentalIndexingFeature.doc_value_only_numeric ?? false}
data-test-subj="packagePolicyEditor.docValueOnlyNumericExperimentalFeature.switch"
label={
<FormattedMessage
id="xpack.fleet.packagePolicyEditor.experimentalFeatures.docValueOnlyNumericLabel"
defaultMessage="Doc value only (numeric types)"
/>
}
onChange={(e) => {
onIndexingSettingChange({
doc_value_only_numeric: e.target.checked,
});
}}
/>
</EuiFlexItem>
<EuiFlexItem>
<EuiSwitch
checked={newExperimentalIndexingFeature.doc_value_only_other ?? false}
data-test-subj="packagePolicyEditor.docValueOnlyOtherExperimentalFeature.switch"
label={
<FormattedMessage
id="xpack.fleet.packagePolicyEditor.experimentalFeatures.docValueOnlyOtherLabel"
defaultMessage="Doc value only (other types)"
/>
}
onChange={(e) => {
onIndexingSettingChange({
doc_value_only_other: e.target.checked,
});
}}
/>
</EuiFlexItem>
</EuiFlexGroup>
</EuiFlexItem>
);
};

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import React, { useState, Fragment, memo, useMemo, useEffect, useRef, useCallback } from 'react';
import React, { useState, Fragment, memo, useMemo, useEffect, useRef } from 'react';
import ReactMarkdown from 'react-markdown';
import styled from 'styled-components';
import { uniq } from 'lodash';
@ -31,7 +31,6 @@ import {
getRegistryDataStreamAssetBaseName,
mapPackageReleaseToIntegrationCardRelease,
} from '../../../../../../../../../common/services';
import type { ExperimentalDataStreamFeature } from '../../../../../../../../../common/types/models/epm';
import type {
NewPackagePolicy,
@ -48,7 +47,6 @@ import { PackagePolicyEditorDatastreamMappings } from '../../datastream_mappings
import { useIndexTemplateExists } from '../../datastream_hooks';
import { ExperimentDatastreamSettings } from './experimental_datastream_settings';
import { PackagePolicyInputVarField } from './package_policy_input_var_field';
import { useDataStreamId } from './hooks';
import { sortDatastreamsByDataset } from './sort_datastreams';
@ -150,22 +148,6 @@ export const PackagePolicyInputStreamConfig = memo<Props>(
[advancedVars, inputStreamValidationResults?.vars]
);
const setNewExperimentalDataFeatures = useCallback(
(newFeatures: ExperimentalDataStreamFeature[]) => {
if (!packagePolicy.package) {
return;
}
updatePackagePolicy({
package: {
...packagePolicy.package,
experimental_data_stream_features: newFeatures,
},
});
},
[updatePackagePolicy, packagePolicy]
);
const { data: dataStreamsData } = useQuery(['datastreams'], () => sendGetDataStreams(), {
enabled: packageInfo.type === 'input', // Only fetch datastream for input type package
});
@ -357,16 +339,6 @@ export const PackagePolicyInputStreamConfig = memo<Props>(
</EuiFlexItem>
</>
)}
{/* Experimental index/datastream settings e.g. synthetic source */}
{isExperimentalDataStreamSettingsEnabled && (
<ExperimentDatastreamSettings
registryDataStream={packageInputStream.data_stream}
experimentalDataFeatures={
packagePolicy.package?.experimental_data_stream_features
}
setNewExperimentalDataFeatures={setNewExperimentalDataFeatures}
/>
)}
</>
) : null}
</Fragment>

View file

@ -15240,7 +15240,6 @@
"xpack.fleet.packagePolicy.policyNotFoundError": "Politique de package possédant l'ID {id} introuvable",
"xpack.fleet.packagePolicyEditor.datastreamIngestPipelinesLabel": "Les pipelines d'ingestion effectuent des transformations courantes sur les données ingérées. Nous vous conseillons de ne modifier que le pipeline d'ingestion personnalisé. Ces pipelines sont partagés par les stratégies d'intégration du même type d'intégration. Toute modification des pipelines d'ingestion affecte donc toutes les politiques d'intégration. {learnMoreLink}",
"xpack.fleet.packagePolicyEditor.datastreamMappings.description": "La mapping est un processus qui consiste à définir la façon dont un document et les champs qu'il contient sont enregistrés et indexés. Si vous ajoutez de nouveaux champs via le pipeline d'ingestion personnalisé, nous vous conseillons d'ajouter un mapping pour ceux du modèle de composant. {learnMoreLink}",
"xpack.fleet.packagePolicyEditor.stepConfigure.experimentalFeaturesRolloverWarning": "Après avoir modifié ces paramètres, vous devrez substituer le flux de données existant pour que les modifications soient prises en compte. {learnMoreLink}",
"xpack.fleet.packagePolicyInvalidError": "La politique de package n'est pas valide : {errors}",
"xpack.fleet.packagePolicyValidation.invalidArrayErrorMessage": "Format invalide pour {fieldName} : tableau attendu",
"xpack.fleet.packagePolicyValidation.requiredErrorMessage": "{fieldName} est requis",
@ -16136,14 +16135,6 @@
"xpack.fleet.packagePolicyEditor.datastreamMappings.inspectBtn": "Inspecter les mappings",
"xpack.fleet.packagePolicyEditor.datastreamMappings.learnMoreLink": "En savoir plus",
"xpack.fleet.packagePolicyEditor.datastreamMappings.title": "Mappings",
"xpack.fleet.packagePolicyEditor.experimentalFeatureRolloverLearnMore": "En savoir plus",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.docValueOnlyNumericLabel": "Valeur de document uniquement (types numériques)",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.docValueOnlyOtherLabel": "Valeur de document uniquement (autres types)",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.syntheticSourceLabel": "Source synthétique",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.tooltip": "L'indexation TSDB est activée par l'intégration.",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.TSDBLabel": "Indexation de base de données temporelle (TSDB)",
"xpack.fleet.packagePolicyEditor.experimentalSettings.title": "Paramètres d'indexation (version d'évaluation technique)",
"xpack.fleet.packagePolicyEditor.stepConfigure.experimentalFeaturesDescription": "Choisissez de quelle façon stocker les index de sauvegarde pour ce flux de données. La modification de ces paramètres peut affecter d'autres propriétés.",
"xpack.fleet.packagePolicyEdotpr.datastreamIngestPipelines.learnMoreLink": "En savoir plus",
"xpack.fleet.packagePolicyField.selectPlaceholder": "Sélectionner une option",
"xpack.fleet.packagePolicyField.yamlCodeEditor": "Éditeur de code YAML",

View file

@ -15239,7 +15239,6 @@
"xpack.fleet.packagePolicy.policyNotFoundError": "ID {id}のパッケージポリシーが見つかりません",
"xpack.fleet.packagePolicyEditor.datastreamIngestPipelinesLabel": "インジェストパイプラインは、取り込まれたデータに対して共通の変換を実行します。カスタムインジェストパイプラインのみを修正することをお勧めします。これらのパイプラインは、同じ統合タイプの統合ポリシーの間で共有されます。このため、インジェストパイプラインを修正すると、すべての統合ポリシーに影響します。{learnMoreLink}",
"xpack.fleet.packagePolicyEditor.datastreamMappings.description": "マッピングは、ドキュメントとドキュメントに含まれるフィールドが格納され、インデックスが作成される方法を定義するプロセスです。カスタムインジェストパイプラインで新しいフィールドを追加している場合は、コンポーネントテンプレートでそのフィールドのマッピングを追加することをお勧めします。{learnMoreLink}",
"xpack.fleet.packagePolicyEditor.stepConfigure.experimentalFeaturesRolloverWarning": "これらの設定を変更した後、変更を有効にするために、既存のデータストリームを手動でロールオーバーする必要があります。{learnMoreLink}",
"xpack.fleet.packagePolicyInvalidError": "パッケージポリシーが無効です:{errors}",
"xpack.fleet.packagePolicyValidation.invalidArrayErrorMessage": "{fieldName}の無効な形式:想定された配列",
"xpack.fleet.packagePolicyValidation.requiredErrorMessage": "{fieldName}は必須です",
@ -16135,14 +16134,6 @@
"xpack.fleet.packagePolicyEditor.datastreamMappings.inspectBtn": "マッピングを検査",
"xpack.fleet.packagePolicyEditor.datastreamMappings.learnMoreLink": "詳細",
"xpack.fleet.packagePolicyEditor.datastreamMappings.title": "マッピング",
"xpack.fleet.packagePolicyEditor.experimentalFeatureRolloverLearnMore": "詳細",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.docValueOnlyNumericLabel": "ドキュメント値のみ(数値型)",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.docValueOnlyOtherLabel": "ドキュメント値のみ(他の型)",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.syntheticSourceLabel": "Syntheticソース",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.tooltip": "TSDBインデックスは統合で有効です",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.TSDBLabel": "時系列データベースTSDBインデックス",
"xpack.fleet.packagePolicyEditor.experimentalSettings.title": "インデックス設定(テクニカルプレビュー)",
"xpack.fleet.packagePolicyEditor.stepConfigure.experimentalFeaturesDescription": "このデータストリームの基本インデックスを保存する方法を選択します。これらの設定を変更すると、他のプロパティに影響する可能性があります。",
"xpack.fleet.packagePolicyEdotpr.datastreamIngestPipelines.learnMoreLink": "詳細",
"xpack.fleet.packagePolicyField.selectPlaceholder": "オプションを選択",
"xpack.fleet.packagePolicyField.yamlCodeEditor": "YAMLコードエディター",

View file

@ -15239,7 +15239,6 @@
"xpack.fleet.packagePolicy.policyNotFoundError": "未找到 ID 为 {id} 的软件包策略",
"xpack.fleet.packagePolicyEditor.datastreamIngestPipelinesLabel": "采集管道会对采集的数据执行常见的转换。我们建议只修改定制采集管道。这些管道将在同一集成类型的集成策略间共享。因此,对采集管道的任何修改都会影响所有集成策略。{learnMoreLink}",
"xpack.fleet.packagePolicyEditor.datastreamMappings.description": "映射是指定义如何存储和索引文档及其包含的字段的过程。如果您正通过定制采集管道添加新字段,我们建议在组件模板中为那些字段添加映射。{learnMoreLink}",
"xpack.fleet.packagePolicyEditor.stepConfigure.experimentalFeaturesRolloverWarning": "更改这些设置后,您需要手动滚动更新现有数据流以使更改生效。{learnMoreLink}",
"xpack.fleet.packagePolicyInvalidError": "软件包策略无效:{errors}",
"xpack.fleet.packagePolicyValidation.invalidArrayErrorMessage": "{fieldName} 格式无效:需要数组",
"xpack.fleet.packagePolicyValidation.requiredErrorMessage": "{fieldName} 必填",
@ -16135,14 +16134,6 @@
"xpack.fleet.packagePolicyEditor.datastreamMappings.inspectBtn": "检查映射",
"xpack.fleet.packagePolicyEditor.datastreamMappings.learnMoreLink": "了解详情",
"xpack.fleet.packagePolicyEditor.datastreamMappings.title": "映射",
"xpack.fleet.packagePolicyEditor.experimentalFeatureRolloverLearnMore": "了解详情",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.docValueOnlyNumericLabel": "仅文档值(数值类型)",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.docValueOnlyOtherLabel": "仅文档值(其他类型)",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.syntheticSourceLabel": "组合源",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.tooltip": "TSDB 索引由此集成启用",
"xpack.fleet.packagePolicyEditor.experimentalFeatures.TSDBLabel": "时间序列数据库 (TSDB) 索引",
"xpack.fleet.packagePolicyEditor.experimentalSettings.title": "索引设置(技术预览)",
"xpack.fleet.packagePolicyEditor.stepConfigure.experimentalFeaturesDescription": "选择您希望如何存储此数据流的后备索引。更改这些设置可能会影响到其他属性。",
"xpack.fleet.packagePolicyEdotpr.datastreamIngestPipelines.learnMoreLink": "了解详情",
"xpack.fleet.packagePolicyField.selectPlaceholder": "选择选项",
"xpack.fleet.packagePolicyField.yamlCodeEditor": "YAML 代码编辑器",