[TSVB] include/exclude values should be ignored for multi_terms (#130884)

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Alexey Antonov 2022-04-29 16:35:27 +03:00 committed by GitHub
parent e1bd7da1d1
commit cf46ec9950
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 44 additions and 8 deletions

View file

@ -90,6 +90,7 @@ exports[`src/legacy/core_plugins/metrics/public/components/splits/terms.test.js
<EuiFieldText
data-test-subj="groupByInclude"
onChange={[Function]}
value=""
/>
</EuiFormRow>
</EuiFlexItem>
@ -113,6 +114,7 @@ exports[`src/legacy/core_plugins/metrics/public/components/splits/terms.test.js
<EuiFieldText
data-test-subj="groupByExclude"
onChange={[Function]}
value=""
/>
</EuiFormRow>
</EuiFlexItem>

View file

@ -95,6 +95,8 @@ export const SplitByTermsUI = ({
(selectedOptions) => {
onChange({
terms_field: selectedOptions.length === 1 ? selectedOptions[0] : selectedOptions,
terms_include: undefined,
terms_exclude: undefined,
});
},
[onChange]
@ -174,7 +176,7 @@ export const SplitByTermsUI = ({
}
>
<EuiFieldText
value={model.terms_include}
value={model.terms_include ?? ''}
onChange={handleTextChange('terms_include')}
data-test-subj="groupByInclude"
/>
@ -191,7 +193,7 @@ export const SplitByTermsUI = ({
}
>
<EuiFieldText
value={model.terms_exclude}
value={model.terms_exclude ?? ''}
onChange={handleTextChange('terms_exclude')}
data-test-subj="groupByExclude"
/>

View file

@ -37,15 +37,16 @@ export function splitByTerms(req, panel, series, esQueryConfig, seriesIndex) {
);
} else {
overwrite(doc, `aggs.${series.id}.${termsType}.field`, termsIds[0]);
if (series.terms_include) {
overwrite(doc, `aggs.${series.id}.${termsType}.include`, series.terms_include);
}
if (series.terms_exclude) {
overwrite(doc, `aggs.${series.id}.${termsType}.exclude`, series.terms_exclude);
}
}
overwrite(doc, `aggs.${series.id}.${termsType}.size`, series.terms_size);
if (series.terms_include) {
overwrite(doc, `aggs.${series.id}.${termsType}.include`, series.terms_include);
}
if (series.terms_exclude) {
overwrite(doc, `aggs.${series.id}.${termsType}.exclude`, series.terms_exclude);
}
if (metric && metric.type !== 'count' && ~basicAggs.indexOf(metric.type)) {
const sortAggKey = `${orderByTerms}-SORT`;
const fn = bucketTransform[metric.type];

View file

@ -111,6 +111,37 @@ describe('splitByTerms', () => {
});
});
test('should ignore "include/exclude" for multi terms', () => {
series.terms_include = 'a';
series.terms_exclude = 'b';
series.terms_field = ['c', 'd'];
const next = jest.fn((doc) => doc);
const doc = splitByTerms(req, panel, series, config, seriesIndex)(next)({});
expect(doc).toMatchInlineSnapshot(`
Object {
"aggs": Object {
"test": Object {
"multi_terms": Object {
"order": Object {
"_count": "desc",
},
"size": 10,
"terms": Array [
Object {
"field": "c",
},
Object {
"field": "d",
},
],
},
},
},
}
`);
});
test('calls next and does not add a terms agg', () => {
series.split_mode = 'everything';
const next = jest.fn((doc) => doc);