[Ingest Pipelines] Add descriptions for ingest processors A-D (#75975)

* Fixing formatting issues identified by Prettier, part 2.

* Fixing helpText labels.

* Adding {value} object for dissect processor.

* Incorporating reviewer feedback.

* fix dropdown not rendering

* Fixing typo.

* add support for FormattedMessage in help text

* fix TS

* Updating some strings and trying to add code formatting.

* fix formatted message

* Editing some field descriptions.

* Apply suggestions from code review

Co-authored-by: James Rodewig <40268737+jrodewig@users.noreply.github.com>

* Trying to add EuiLink, plus edits.

* fix help text for dissect processor

* Incorporating reviewer feedback.

* Trying to add another EUI element, plus edits.

* fix date_index_name description text

* Minor edit.

* Fixing linter error.

* Removing FunctionComponent, which was not read and caused build errors.

Co-authored-by: Alison Goryachev <alisonmllr20@gmail.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Co-authored-by: James Rodewig <40268737+jrodewig@users.noreply.github.com>
This commit is contained in:
Adam Locke 2020-09-04 15:26:05 -04:00 committed by GitHub
parent db67eb0b29
commit 6d4e772cec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 171 additions and 97 deletions

View file

@ -28,13 +28,13 @@ const fieldsConfig: FieldsConfig = {
defaultMessage: 'Value',
}),
helpText: i18n.translate('xpack.ingestPipelines.pipelineEditor.appendForm.valueFieldHelpText', {
defaultMessage: 'The value to be appended by this processor.',
defaultMessage: 'Values to append.',
}),
validations: [
{
validator: emptyField(
i18n.translate('xpack.ingestPipelines.pipelineEditor.appendForm.valueRequiredError', {
defaultMessage: 'A value to set is required.',
defaultMessage: 'A value is required.',
})
),
},
@ -47,7 +47,7 @@ export const Append: FunctionComponent = () => {
<>
<FieldNameField
helpText={i18n.translate('xpack.ingestPipelines.pipelineEditor.appendForm.fieldHelpText', {
defaultMessage: 'The field to be appended to.',
defaultMessage: 'Field to append values to.',
})}
/>

View file

@ -17,7 +17,10 @@ export const Bytes: FunctionComponent = () => {
<FieldNameField
helpText={i18n.translate(
'xpack.ingestPipelines.pipelineEditor.bytesForm.fieldNameHelpText',
{ defaultMessage: 'The field to convert.' }
{
defaultMessage:
'Field to convert. If the field contains an array, each array value is converted.',
}
)}
/>

View file

@ -5,7 +5,9 @@
*/
import React, { FunctionComponent } from 'react';
import { FormattedMessage } from '@kbn/i18n/react';
import { i18n } from '@kbn/i18n';
import { EuiCode } from '@elastic/eui';
import {
FIELD_TYPES,
@ -34,12 +36,15 @@ const fieldsConfig: FieldsConfig = {
defaultMessage: 'Error distance',
}
),
helpText: i18n.translate(
'xpack.ingestPipelines.pipelineEditor.circleForm.errorDistanceHelpText',
{
defaultMessage:
'The difference between the resulting inscribed distance from center to side and the circles radius (measured in meters for geo_shape, unit-less for shape).',
}
helpText: () => (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.circleForm.errorDistanceHelpText"
defaultMessage="Difference between the side of the inscribed shape to the encompassing circle. Determines the accuracy of the output polygon. Measured in meters for {geo_shape}, but uses no units for {shape}."
values={{
geo_shape: <EuiCode>{'geo_shape'}</EuiCode>,
shape: <EuiCode>{'shape'}</EuiCode>,
}}
/>
),
validations: [
{
@ -66,7 +71,7 @@ const fieldsConfig: FieldsConfig = {
}),
helpText: i18n.translate(
'xpack.ingestPipelines.pipelineEditor.circleForm.shapeTypeFieldHelpText',
{ defaultMessage: 'Which field mapping type is to be used.' }
{ defaultMessage: 'Field mapping type to use when processing the output polygon.' }
),
validations: [
{
@ -86,7 +91,7 @@ export const Circle: FunctionComponent = () => {
<FieldNameField
helpText={i18n.translate(
'xpack.ingestPipelines.pipelineEditor.circleForm.fieldNameHelpText',
{ defaultMessage: 'The string-valued field to trim whitespace from.' }
{ defaultMessage: 'Field to convert.' }
)}
/>

View file

@ -40,7 +40,7 @@ const ifConfig: FieldConfig = {
defaultMessage: 'Condition (optional)',
}),
helpText: i18n.translate('xpack.ingestPipelines.pipelineEditor.commonFields.ifFieldHelpText', {
defaultMessage: 'Conditionally execute this processor.',
defaultMessage: 'Conditionally run this processor.',
}),
type: FIELD_TYPES.TEXT,
};
@ -50,7 +50,7 @@ const tagConfig: FieldConfig = {
defaultMessage: 'Tag (optional)',
}),
helpText: i18n.translate('xpack.ingestPipelines.pipelineEditor.commonFields.tagFieldHelpText', {
defaultMessage: 'An identifier for this processor. Useful for debugging and metrics.',
defaultMessage: 'Identifier for the processor. Useful for debugging and metrics.',
}),
type: FIELD_TYPES.TEXT,
};

View file

@ -5,7 +5,7 @@
*/
import { EuiComboBox, EuiComboBoxOptionOption, EuiFormRow } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import React, { FunctionComponent } from 'react';
import React, { FunctionComponent, ReactNode } from 'react';
import { flow } from 'fp-ts/lib/function';
import { map } from 'fp-ts/lib/Array';
@ -68,13 +68,18 @@ export const ProcessorTypeField: FunctionComponent<Props> = ({ initialType }) =>
<UseField<string> config={typeConfig} defaultValue={initialType} path="type">
{(typeField) => {
let selectedOptions: ProcessorTypeAndLabel[];
let description: string | ReactNode = '';
if (typeField.value?.length) {
const type = typeField.value;
const descriptor = getProcessorDescriptor(type);
selectedOptions = descriptor
? [{ label: descriptor.label, value: type }]
: // If there is no label for this processor type, just use the type as the label
[{ label: type, value: type }];
const processorDescriptor = getProcessorDescriptor(type);
if (processorDescriptor) {
description = processorDescriptor.description || '';
selectedOptions = [{ label: processorDescriptor.label, value: type }];
} else {
// If there is no label for this processor type, just use the type as the label
selectedOptions = [{ label: type, value: type }];
}
} else {
selectedOptions = [];
}
@ -102,9 +107,7 @@ export const ProcessorTypeField: FunctionComponent<Props> = ({ initialType }) =>
<EuiFormRow
label={typeField.label}
labelAppend={typeField.labelAppend}
helpText={
typeof typeField.helpText === 'function' ? typeField.helpText() : typeField.helpText
}
helpText={typeof description === 'function' ? description() : description}
error={error}
isInvalid={isInvalid}
fullWidth

View file

@ -21,7 +21,7 @@ const fieldsConfig: FieldsConfig = {
helpText: i18n.translate(
'xpack.ingestPipelines.pipelineEditor.commonFields.targetFieldHelpText',
{
defaultMessage: 'Field to assign the value to. If empty, the field is updated in-place.',
defaultMessage: 'Output field. If empty, the input field is updated in place.',
}
),
},

View file

@ -30,7 +30,7 @@ const fieldsConfig: FieldsConfig = {
defaultMessage: 'Type',
}),
helpText: i18n.translate('xpack.ingestPipelines.pipelineEditor.convertForm.typeFieldHelpText', {
defaultMessage: 'The type to convert the existing value to.',
defaultMessage: 'Field data type for the output.',
}),
validations: [
{
@ -50,7 +50,7 @@ export const Convert: FunctionComponent = () => {
<FieldNameField
helpText={i18n.translate(
'xpack.ingestPipelines.pipelineEditor.convertForm.fieldNameHelpText',
{ defaultMessage: 'The field whose value is to be converted.' }
{ defaultMessage: 'Field to convert.' }
)}
/>
@ -115,14 +115,7 @@ export const Convert: FunctionComponent = () => {
path="fields.type"
/>
<TargetField
helpText={i18n.translate(
'xpack.ingestPipelines.pipelineEditor.convertForm.targetFieldHelpText',
{
defaultMessage: 'The field to assign the converted value to.',
}
)}
/>
<TargetField />
<IgnoreMissingField />
</>

View file

@ -36,7 +36,7 @@ const isStringLengthOne: ValidationFunc = ({ value }) => {
message: i18n.translate(
'xpack.ingestPipelines.pipelineEditor.convertForm.separatorLengthError',
{
defaultMessage: 'A separator value must be 1 character.',
defaultMessage: 'Must be a single character.',
}
),
}
@ -52,7 +52,7 @@ const fieldsConfig: FieldsConfig = {
defaultMessage: 'Target fields',
}),
helpText: i18n.translate('xpack.ingestPipelines.pipelineEditor.csvForm.targetFieldsHelpText', {
defaultMessage: 'The array of fields to assign extracted values to.',
defaultMessage: 'Output fields. Extracted values are mapped to these fields.',
}),
validations: [
{
@ -83,7 +83,7 @@ const fieldsConfig: FieldsConfig = {
helpText: (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.convertForm.separatorHelpText"
defaultMessage="Separator used in CSV, has to be single character string. Default value is {value}."
defaultMessage="Delimiter used in the CSV data. Defaults to {value}."
values={{ value: <EuiCode inline>{','}</EuiCode> }}
/>
),
@ -102,7 +102,7 @@ const fieldsConfig: FieldsConfig = {
helpText: (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.convertForm.quoteHelpText"
defaultMessage="Quote used in CSV, has to be single character string. Default value is {value}."
defaultMessage="Escape character used in the CSV data. Defaults to {value}."
values={{ value: <EuiCode inline>{'"'}</EuiCode> }}
/>
),
@ -115,7 +115,7 @@ const fieldsConfig: FieldsConfig = {
defaultMessage: 'Trim',
}),
helpText: i18n.translate('xpack.ingestPipelines.pipelineEditor.csvForm.trimFieldHelpText', {
defaultMessage: 'Trim whitespaces in unquoted fields',
defaultMessage: 'Remove whitespaces in unquoted CSV data.',
}),
},
empty_value: {
@ -127,7 +127,7 @@ const fieldsConfig: FieldsConfig = {
'xpack.ingestPipelines.pipelineEditor.convertForm.emptyValueFieldHelpText',
{
defaultMessage:
'Value used to fill empty fields, empty fields will be skipped if this is not provided.',
'Used to fill empty fields. If no value is provided, empty fields are skipped.',
}
),
},
@ -138,7 +138,7 @@ export const CSV: FunctionComponent = () => {
<>
<FieldNameField
helpText={i18n.translate('xpack.ingestPipelines.pipelineEditor.csvForm.fieldNameHelpText', {
defaultMessage: 'The field to extract data from.',
defaultMessage: 'Field containing CSV data.',
})}
/>

View file

@ -33,7 +33,7 @@ const fieldsConfig: FieldsConfig = {
}),
helpText: i18n.translate('xpack.ingestPipelines.pipelineEditor.dateForm.formatsFieldHelpText', {
defaultMessage:
'An array of the expected date formats. Can be a java time pattern or one of the following formats: ISO8601, UNIX, UNIX_MS, or TAI64N.',
'Expected date formats. Provided formats are applied sequentially. Accepts a Java time pattern, ISO8601, UNIX, UNIX_MS, or TAI64N formats.',
}),
validations: [
{
@ -59,7 +59,7 @@ const fieldsConfig: FieldsConfig = {
helpText: (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.dateForm.timezoneHelpText"
defaultMessage="The timezone to use when parsing the date. Default value is {timezone}."
defaultMessage="Timezone for the date. Defaults to {timezone}."
values={{ timezone: <EuiCode inline>{'UTC'}</EuiCode> }}
/>
),
@ -73,7 +73,7 @@ const fieldsConfig: FieldsConfig = {
helpText: (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.dateForm.localeHelpText"
defaultMessage="The locale to use when parsing the date, relevant when parsing month names or week days. Default value is {timezone}."
defaultMessage="Locale for the date. Useful when parsing month or day names. Defaults to {timezone}."
values={{ timezone: <EuiCode inline>{'ENGLISH'}</EuiCode> }}
/>
),
@ -89,7 +89,7 @@ export const DateProcessor: FunctionComponent = () => {
<FieldNameField
helpText={i18n.translate(
'xpack.ingestPipelines.pipelineEditor.dateForm.fieldNameHelpText',
{ defaultMessage: 'The field to get the date from.' }
{ defaultMessage: 'Field to convert.' }
)}
/>
@ -99,7 +99,7 @@ export const DateProcessor: FunctionComponent = () => {
helpText={
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.dateForm.targetFieldHelpText"
defaultMessage="The field that will hold the parsed date. Default field is {defaultField}."
defaultMessage="Output field. If empty, the input field is updated in place. Defaults to {defaultField}."
values={{
defaultField: <EuiCode inline>{'@timestamp'}</EuiCode>,
}}

View file

@ -36,7 +36,8 @@ const fieldsConfig: FieldsConfig = {
helpText: i18n.translate(
'xpack.ingestPipelines.pipelineEditor.dateIndexNameForm.dateRoundingFieldHelpText',
{
defaultMessage: 'How to round the date when formatting the date into the index name.',
defaultMessage:
'Time period used to round the date when formatting the date into the index name.',
}
),
validations: [
@ -64,7 +65,7 @@ const fieldsConfig: FieldsConfig = {
),
helpText: i18n.translate(
'xpack.ingestPipelines.pipelineEditor.dateIndexNameForm.indexNamePrefixFieldHelpText',
{ defaultMessage: 'A prefix of the index name to be prepended before the printed date.' }
{ defaultMessage: 'Prefix to add before the printed date in the index name.' }
),
},
index_name_format: {
@ -79,7 +80,7 @@ const fieldsConfig: FieldsConfig = {
helpText: (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.dateIndexNameForm.indexNameFormatFieldHelpText"
defaultMessage="The format to be used when printing the parsed date into the index name. Default value is {value}."
defaultMessage="Date format used to print the parsed date into the index name. Defaults to {value}."
values={{ value: <EuiCode inline>{'yyyy-MM-dd'}</EuiCode> }}
/>
),
@ -99,7 +100,7 @@ const fieldsConfig: FieldsConfig = {
helpText: (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.dateIndexNameForm.dateFormatsHelpText"
defaultMessage="An array of the expected date formats for parsing dates / timestamps in the document being preprocessed. Can be a java time pattern or one of the following formats: ISO8601, UNIX, UNIX_MS, or TAI64N. Default value is {value}."
defaultMessage="Expected date formats. Provided formats are applied sequentially. Accepts a Java time pattern, ISO8601, UNIX, UNIX_MS, or TAI64N formats. Defaults to {value}."
values={{ value: <EuiCode inline>{"yyyy-MM-dd'T'HH:mm:ss.SSSXX"}</EuiCode> }}
/>
),
@ -116,7 +117,7 @@ const fieldsConfig: FieldsConfig = {
helpText: (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.dateIndexNameForm.timezoneHelpText"
defaultMessage="The timezone to use when parsing the date and when date math index supports resolves expressions into concrete index names. Default value is {timezone}."
defaultMessage="Timezone used when parsing the date and constructing the index name expression. Defaults to {timezone}."
values={{ timezone: <EuiCode inline>{'UTC'}</EuiCode> }}
/>
),
@ -133,7 +134,7 @@ const fieldsConfig: FieldsConfig = {
helpText: (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.dateIndexForm.localeHelpText"
defaultMessage="The locale to use when parsing the date from the document being preprocessed, relevant when parsing month names or week days. Default value is {locale}."
defaultMessage="Locale to use when parsing the date. Useful when parsing month or day names. Defaults to {locale}."
values={{ locale: <EuiCode inline>{'ENGLISH'}</EuiCode> }}
/>
),
@ -149,7 +150,7 @@ export const DateIndexName: FunctionComponent = () => {
<FieldNameField
helpText={i18n.translate(
'xpack.ingestPipelines.pipelineEditor.dateIndexNameForm.fieldNameHelpText',
{ defaultMessage: 'The field to get the date or timestamp from.' }
{ defaultMessage: 'Field containing the date or timestamp.' }
)}
/>

View file

@ -5,7 +5,7 @@
*/
import React, { FunctionComponent } from 'react';
import { EuiCode } from '@elastic/eui';
import { EuiCode, EuiLink } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n/react';
import { TextEditor } from '../field_components';
@ -16,6 +16,7 @@ import {
fieldValidators,
UseField,
Field,
useKibana,
} from '../../../../../../shared_imports';
import { FieldNameField } from './common_fields/field_name_field';
@ -24,55 +25,79 @@ import { EDITOR_PX_HEIGHT } from './shared';
const { emptyField } = fieldValidators;
const fieldsConfig: Record<string, FieldConfig> = {
/* Required field config */
pattern: {
type: FIELD_TYPES.TEXT,
label: i18n.translate('xpack.ingestPipelines.pipelineEditor.dissectForm.patternFieldLabel', {
defaultMessage: 'Pattern',
}),
helpText: i18n.translate(
'xpack.ingestPipelines.pipelineEditor.dissectForm.patternFieldHelpText',
{
defaultMessage: 'The pattern to apply to the field.',
}
),
validations: [
{
validator: emptyField(
i18n.translate('xpack.ingestPipelines.pipelineEditor.dissectForm.patternRequiredError', {
defaultMessage: 'A pattern value is required.',
})
),
},
],
},
/* Optional field config */
append_separator: {
type: FIELD_TYPES.TEXT,
label: i18n.translate(
'xpack.ingestPipelines.pipelineEditor.dissectForm.appendSeparatorparaotrFieldLabel',
{
defaultMessage: 'Append separator (optional)',
}
),
helpText: (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.dissectForm.appendSeparatorHelpText"
defaultMessage="The character(s) that separate the appended fields. Default value is {value} (an empty string)."
values={{ value: <EuiCode inline>{'""'}</EuiCode> }}
/>
),
},
const getFieldsConfig = (esDocUrl: string): Record<string, FieldConfig> => {
return {
/* Required field config */
pattern: {
type: FIELD_TYPES.TEXT,
label: i18n.translate('xpack.ingestPipelines.pipelineEditor.dissectForm.patternFieldLabel', {
defaultMessage: 'Pattern',
}),
helpText: (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.dissectForm.patternFieldHelpText"
defaultMessage="Pattern used to dissect the specified field. The pattern is defined by the parts of the string to discard. Use a {keyModifier} to alter the dissection behavior."
values={{
keyModifier: (
<EuiLink
target="_blank"
external
href={esDocUrl + '/dissect-processor.html#dissect-key-modifiers'}
>
{i18n.translate(
'xpack.ingestPipelines.pipelineEditor.dissectForm.patternFieldHelpText.dissectProcessorLink',
{
defaultMessage: 'key modifier',
}
)}
</EuiLink>
),
}}
/>
),
validations: [
{
validator: emptyField(
i18n.translate(
'xpack.ingestPipelines.pipelineEditor.dissectForm.patternRequiredError',
{
defaultMessage: 'A pattern value is required.',
}
)
),
},
],
},
/* Optional field config */
append_separator: {
type: FIELD_TYPES.TEXT,
label: i18n.translate(
'xpack.ingestPipelines.pipelineEditor.dissectForm.appendSeparatorparaotrFieldLabel',
{
defaultMessage: 'Append separator (optional)',
}
),
helpText: (
<FormattedMessage
id="xpack.ingestPipelines.pipelineEditor.dissectForm.appendSeparatorHelpText"
defaultMessage="If you specify a key modifier, this character separates the fields when appending results. Defaults to {value}."
values={{ value: <EuiCode inline>{'""'}</EuiCode> }}
/>
),
},
};
};
export const Dissect: FunctionComponent = () => {
const { services } = useKibana();
const fieldsConfig = getFieldsConfig(services.documentation.getEsDocsBasePath());
return (
<>
<FieldNameField
helpText={i18n.translate(
'xpack.ingestPipelines.pipelineEditor.dissectForm.fieldNameHelpText',
{ defaultMessage: 'The field to dissect.' }
{ defaultMessage: 'Field to dissect.' }
)}
/>

View file

@ -18,7 +18,8 @@ const fieldsConfig: Record<string, FieldConfig> = {
defaultMessage: 'Path',
}),
helpText: i18n.translate('xpack.ingestPipelines.pipelineEditor.dotExpanderForm.pathHelpText', {
defaultMessage: 'Only required if the field to expand is part another object field.',
defaultMessage:
'Output field. Only required if the field to expand is part another object field.',
}),
},
};
@ -29,7 +30,7 @@ export const DotExpander: FunctionComponent = () => {
<FieldNameField
helpText={i18n.translate(
'xpack.ingestPipelines.pipelineEditor.dotExpanderForm.fieldNameHelpText',
{ defaultMessage: 'The field to expand into an object field.' }
{ defaultMessage: 'Field containing dot notation.' }
)}
additionalValidations={[
{

View file

@ -5,6 +5,9 @@
*/
import { i18n } from '@kbn/i18n';
import React, { ReactNode } from 'react';
import { FormattedMessage } from '@kbn/i18n/react';
import { EuiCode } from '@elastic/eui';
import {
Append,
@ -47,6 +50,7 @@ interface FieldDescriptor {
* A sentence case label that can be displayed to users
*/
label: string;
description?: string | ReactNode;
}
type MapProcessorTypeToDescriptor = Record<string, FieldDescriptor>;
@ -58,6 +62,10 @@ export const mapProcessorTypeToDescriptor: MapProcessorTypeToDescriptor = {
label: i18n.translate('xpack.ingestPipelines.processors.label.append', {
defaultMessage: 'Append',
}),
description: i18n.translate('xpack.ingestPipelines.processors.description.append', {
defaultMessage:
"Appends values to a field's array. If the field contains a single value, the processor first converts it to an array. If the field doesn't exist, the processor creates an array containing the appended values.",
}),
},
bytes: {
FieldsComponent: Bytes,
@ -65,6 +73,10 @@ export const mapProcessorTypeToDescriptor: MapProcessorTypeToDescriptor = {
label: i18n.translate('xpack.ingestPipelines.processors.label.bytes', {
defaultMessage: 'Bytes',
}),
description: i18n.translate('xpack.ingestPipelines.processors.description.bytes', {
defaultMessage:
'Converts digital storage units to bytes. For example, 1KB becomes 1024 bytes.',
}),
},
circle: {
FieldsComponent: Circle,
@ -72,6 +84,9 @@ export const mapProcessorTypeToDescriptor: MapProcessorTypeToDescriptor = {
label: i18n.translate('xpack.ingestPipelines.processors.label.circle', {
defaultMessage: 'Circle',
}),
description: i18n.translate('xpack.ingestPipelines.processors.description.circle', {
defaultMessage: 'Converts a circle definition into an approximate polygon.',
}),
},
convert: {
FieldsComponent: Convert,
@ -79,6 +94,10 @@ export const mapProcessorTypeToDescriptor: MapProcessorTypeToDescriptor = {
label: i18n.translate('xpack.ingestPipelines.processors.label.convert', {
defaultMessage: 'Convert',
}),
description: i18n.translate('xpack.ingestPipelines.processors.description.convert', {
defaultMessage:
'Converts a field to a different data type. For example, you can convert a string to an long.',
}),
},
csv: {
FieldsComponent: CSV,
@ -86,6 +105,9 @@ export const mapProcessorTypeToDescriptor: MapProcessorTypeToDescriptor = {
label: i18n.translate('xpack.ingestPipelines.processors.label.csv', {
defaultMessage: 'CSV',
}),
description: i18n.translate('xpack.ingestPipelines.processors.description.csv', {
defaultMessage: 'Extracts fields values from CSV data.',
}),
},
date: {
FieldsComponent: DateProcessor,
@ -93,6 +115,9 @@ export const mapProcessorTypeToDescriptor: MapProcessorTypeToDescriptor = {
label: i18n.translate('xpack.ingestPipelines.processors.label.date', {
defaultMessage: 'Date',
}),
description: i18n.translate('xpack.ingestPipelines.processors.description.date', {
defaultMessage: 'Converts a date to a document timestamp.',
}),
},
date_index_name: {
FieldsComponent: DateIndexName,
@ -100,6 +125,13 @@ export const mapProcessorTypeToDescriptor: MapProcessorTypeToDescriptor = {
label: i18n.translate('xpack.ingestPipelines.processors.label.dateIndexName', {
defaultMessage: 'Date index name',
}),
description: () => (
<FormattedMessage
id="xpack.ingestPipelines.processors.description.dateIndexName"
defaultMessage="Uses a date or timestamp to add documents to the correct time-based index. Index names must use a date math pattern, such as {value}."
values={{ value: <EuiCode inline>{'my-index-yyyy-MM-dd'}</EuiCode> }}
/>
),
},
dissect: {
FieldsComponent: Dissect,
@ -107,6 +139,9 @@ export const mapProcessorTypeToDescriptor: MapProcessorTypeToDescriptor = {
label: i18n.translate('xpack.ingestPipelines.processors.label.dissect', {
defaultMessage: 'Dissect',
}),
description: i18n.translate('xpack.ingestPipelines.processors.description.dissect', {
defaultMessage: 'Uses dissect patterns to extract matches from a field.',
}),
},
dot_expander: {
FieldsComponent: DotExpander,
@ -114,6 +149,10 @@ export const mapProcessorTypeToDescriptor: MapProcessorTypeToDescriptor = {
label: i18n.translate('xpack.ingestPipelines.processors.label.dotExpander', {
defaultMessage: 'Dot expander',
}),
description: i18n.translate('xpack.ingestPipelines.processors.description.dotExpander', {
defaultMessage:
'Expands a field containing dot notation into an object field. The object field is then accessible by other processors in the pipeline.',
}),
},
drop: {
FieldsComponent: Drop,
@ -121,6 +160,10 @@ export const mapProcessorTypeToDescriptor: MapProcessorTypeToDescriptor = {
label: i18n.translate('xpack.ingestPipelines.processors.label.drop', {
defaultMessage: 'Drop',
}),
description: i18n.translate('xpack.ingestPipelines.processors.description.drop', {
defaultMessage:
'Drops documents without returning an error. Used to only index documents that meet specified conditions.',
}),
},
enrich: {
FieldsComponent: Enrich,