Skip to content

Commit

Permalink
[Mappings editor] Add missing max_shingle_size parameter to search_as…
Browse files Browse the repository at this point in the history
…_you_type (#55161) (#55366)
  • Loading branch information
sebelga committed Jan 21, 2020
1 parent 3070f0b commit 5122ac3
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,5 @@ export * from './fielddata_parameter';
export * from './split_queries_on_whitespace_parameter';

export * from './locale_parameter';

export * from './max_shingle_size_parameter';
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/

import React from 'react';

import { i18n } from '@kbn/i18n';

import { getFieldConfig } from '../../../lib';
import { EditFieldFormRow } from '../fields/edit_field';
import { UseField, Field } from '../../../shared_imports';

interface Props {
defaultToggleValue: boolean;
}

export const MaxShingleSizeParameter = ({ defaultToggleValue }: Props) => (
<EditFieldFormRow
title={i18n.translate('xpack.idxMgmt.mappingsEditor.maxShingleSizeFieldTitle', {
defaultMessage: 'Set max shingle size',
})}
description={i18n.translate('xpack.idxMgmt.mappingsEditor.maxShingleSizeFieldDescription', {
defaultMessage:
'The default is three shingle subfields. More subfields enables more specific queries, but increases index size.',
})}
defaultToggleValue={defaultToggleValue}
>
<UseField
path="max_shingle_size"
component={Field}
config={getFieldConfig('max_shingle_size')}
componentProps={{
euiFieldProps: {
options: [
{ value: 2, text: '2' },
{ value: 3, text: '3' },
{ value: 4, text: '4' },
],
},
}}
/>
</EditFieldFormRow>
);
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
NormsParameter,
SimilarityParameter,
TermVectorParameter,
MaxShingleSizeParameter,
} from '../../field_parameters';
import { BasicParametersSection, AdvancedParametersSection } from '../edit_field';

Expand All @@ -24,7 +25,8 @@ interface Props {
const getDefaultToggleValue = (param: string, field: FieldType) => {
switch (param) {
case 'similarity':
case 'term_vector': {
case 'term_vector':
case 'max_shingle_size': {
return field[param] !== undefined && field[param] !== getFieldConfig(param).defaultValue;
}
case 'analyzers': {
Expand All @@ -47,6 +49,10 @@ export const SearchAsYouType = React.memo(({ field }: Props) => {
<AdvancedParametersSection>
<AnalyzersParameter field={field} withSearchQuoteAnalyzer={true} />

<MaxShingleSizeParameter
defaultToggleValue={getDefaultToggleValue('max_shingle_size', field.source)}
/>

<NormsParameter />

<SimilarityParameter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -894,4 +894,15 @@ export const PARAMETERS_DEFINITION = {
},
schema: t.string,
},
max_shingle_size: {
fieldConfig: {
type: FIELD_TYPES.SELECT,
label: i18n.translate('xpack.idxMgmt.mappingsEditor.largestShingleSizeFieldLabel', {
defaultMessage: 'Max shingle size',
}),
defaultValue: 3,
formatters: [toInt],
},
schema: t.union([t.literal(2), t.literal(3), t.literal(4)]),
},
};
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,7 @@ describe('Properties validator', () => {
enable_position_increments: [],
depth_limit: true,
dims: false,
max_shingle_size: 'string_not_allowed',
},
// All the parameters in "goodField" have the correct format
// and should still be there after the validation ran.
Expand Down Expand Up @@ -307,6 +308,7 @@ describe('Properties validator', () => {
enable_position_increments: true,
depth_limit: 20,
dims: 'abc',
max_shingle_size: 2,
},
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,8 @@ export type ParameterName =
| 'points_only'
| 'path'
| 'dims'
| 'depth_limit';
| 'depth_limit'
| 'max_shingle_size';

export interface Parameter {
fieldConfig: FieldConfig;
Expand Down

0 comments on commit 5122ac3

Please sign in to comment.