mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
* WIP, started updating functions for detecting scripted phrase filters * replace script.script with query.script.script * added test to verify detection of scripted and phrase filters * with elastic@ email Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Jean-Louis Leysens <jloleysens@gmail.com>
This commit is contained in:
parent
a5f3814947
commit
740aa538e1
5 changed files with 36 additions and 9 deletions
|
@ -5,16 +5,19 @@
|
|||
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
||||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
import { set } from 'lodash';
|
||||
import {
|
||||
buildInlineScriptForPhraseFilter,
|
||||
buildPhraseFilter,
|
||||
getPhraseFilterField,
|
||||
PhraseFilter,
|
||||
isPhraseFilter,
|
||||
isScriptedPhraseFilter,
|
||||
} from './phrase_filter';
|
||||
import { fields, getField } from '../stubs';
|
||||
import { DataViewBase } from '../../es_query';
|
||||
import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
|
||||
import { Filter } from './types';
|
||||
|
||||
describe('Phrase filter builder', () => {
|
||||
let indexPattern: DataViewBase;
|
||||
|
@ -164,3 +167,23 @@ describe('getPhraseFilterField', function () {
|
|||
expect(result).toBe('extension');
|
||||
});
|
||||
});
|
||||
|
||||
describe('isPhraseFilter', () => {
|
||||
it('should return true if the filter is a phrases filter false otherwise', () => {
|
||||
const filter: Filter = set({ meta: {} }, 'query.match_phrase', {}) as Filter;
|
||||
const unknownFilter = {} as Filter;
|
||||
|
||||
expect(isPhraseFilter(filter)).toBe(true);
|
||||
expect(isPhraseFilter(unknownFilter)).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isScriptedPhraseFilter', () => {
|
||||
it('should return true if the filter is a phrases filter false otherwise', () => {
|
||||
const filter: Filter = set({ meta: {} }, 'query.script.script.params.value', {}) as Filter;
|
||||
const unknownFilter = {} as Filter;
|
||||
|
||||
expect(isScriptedPhraseFilter(filter)).toBe(true);
|
||||
expect(isPhraseFilter(unknownFilter)).toBe(false);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -31,8 +31,10 @@ export type PhraseFilter = Filter & {
|
|||
|
||||
export type ScriptedPhraseFilter = Filter & {
|
||||
meta: PhraseFilterMeta;
|
||||
script: {
|
||||
script: estypes.InlineScript;
|
||||
query: {
|
||||
script: {
|
||||
script: estypes.InlineScript;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -58,7 +60,7 @@ export const isPhraseFilter = (filter: Filter): filter is PhraseFilter => {
|
|||
* @public
|
||||
*/
|
||||
export const isScriptedPhraseFilter = (filter: Filter): filter is ScriptedPhraseFilter =>
|
||||
has(filter, 'script.script.params.value');
|
||||
has(filter, 'query.script.script.params.value');
|
||||
|
||||
/** @internal */
|
||||
export const getPhraseFilterField = (filter: PhraseFilter) => {
|
||||
|
@ -77,7 +79,7 @@ export const getPhraseFilterValue = (
|
|||
const queryValue = Object.values(queryConfig)[0];
|
||||
return isPlainObject(queryValue) ? queryValue.query : queryValue;
|
||||
} else {
|
||||
return filter.script.script.params?.value;
|
||||
return filter.query?.script?.script?.params?.value;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -40,7 +40,9 @@ function getExistingFilter(
|
|||
}
|
||||
|
||||
if (isScriptedPhraseFilter(filter)) {
|
||||
return filter.meta.field === fieldName && filter.script.script.params?.value === value;
|
||||
return (
|
||||
filter.meta.field === fieldName && filter.query?.script?.script?.params?.value === value
|
||||
);
|
||||
}
|
||||
}) as any;
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ import {
|
|||
import { FilterValueFormatter } from '../../../../../common';
|
||||
|
||||
const getScriptedPhraseValue = (filter: PhraseFilter) =>
|
||||
get(filter, ['script', 'script', 'params', 'value']);
|
||||
get(filter, ['query', 'script', 'script', 'params', 'value']);
|
||||
|
||||
const getFormattedValueFn = (value: any) => {
|
||||
return (formatter?: FilterValueFormatter) => {
|
||||
|
|
|
@ -97,8 +97,8 @@ export class PhraseFilterManager extends FilterManager {
|
|||
}
|
||||
|
||||
// scripted field filter
|
||||
if (_.has(kbnFilter, 'script')) {
|
||||
return _.get(kbnFilter, 'script.script.params.value');
|
||||
if (_.has(kbnFilter, 'query.script')) {
|
||||
return _.get(kbnFilter, 'query.script.script.params.value');
|
||||
}
|
||||
|
||||
// single phrase filter
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue