mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
[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:
parent
e1bd7da1d1
commit
cf46ec9950
4 changed files with 44 additions and 8 deletions
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
/>
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue