mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
Merge pull request #8676 from elastic/jasper/backport/8642/5.0
[backport] PR #8642 to 5.0
This commit is contained in:
commit
0b519aabe3
4 changed files with 16 additions and 8 deletions
|
@ -114,13 +114,13 @@ describe('Filter Manager', function () {
|
|||
checkAddFilters(0, null, 3);
|
||||
expect(appState.filters).to.have.length(2);
|
||||
|
||||
let scriptedField = {name: 'scriptedField', scripted: true, script: 1};
|
||||
let scriptedField = {name: 'scriptedField', scripted: true, script: 1, lang: 'painless'};
|
||||
filterManager.add(scriptedField, 1, '+', 'myIndex');
|
||||
checkAddFilters(1, [{
|
||||
meta: {index: 'myIndex', negate: false, field: 'scriptedField'},
|
||||
script: {
|
||||
script: {
|
||||
inline: '(' + scriptedField.script + ') == value',
|
||||
inline: '(' + scriptedField.script + ') == params.value',
|
||||
lang: scriptedField.lang,
|
||||
params: {value: 1}
|
||||
}
|
||||
|
|
|
@ -54,11 +54,13 @@ export default function (Private) {
|
|||
break;
|
||||
default:
|
||||
if (field.scripted) {
|
||||
// painless expects params.value while groovy and expression languages expect value.
|
||||
const valueClause = field.lang === 'painless' ? 'params.value' : 'value';
|
||||
filter = {
|
||||
meta: { negate: negate, index: index, field: fieldName },
|
||||
script: {
|
||||
script: {
|
||||
inline: '(' + field.script + ') == value',
|
||||
inline: '(' + field.script + ') == ' + valueClause,
|
||||
lang: field.lang,
|
||||
params: {
|
||||
value: value
|
||||
|
@ -82,3 +84,4 @@ export default function (Private) {
|
|||
|
||||
return filterManager;
|
||||
};
|
||||
|
||||
|
|
|
@ -3,8 +3,10 @@ export default function buildPhraseFilter(field, value, indexPattern) {
|
|||
let filter = { meta: { index: indexPattern.id} };
|
||||
|
||||
if (field.scripted) {
|
||||
// painless expects params.value while groovy and expression languages expect value.
|
||||
const valueClause = field.lang === 'painless' ? 'params.value' : 'value';
|
||||
_.set(filter, 'script.script', {
|
||||
inline: '(' + field.script + ') == value',
|
||||
inline: '(' + field.script + ') == ' + valueClause,
|
||||
lang: field.lang,
|
||||
params: {
|
||||
value: value
|
||||
|
|
|
@ -33,15 +33,18 @@ export default function buildRangeFilter(field, params, indexPattern, formattedV
|
|||
lt: '<',
|
||||
};
|
||||
|
||||
const script = _.map(params, function (val, key) {
|
||||
return '(' + field.script + ')' + operators[key] + key;
|
||||
const knownParams = _.pick(params, (val, key) => { return key in operators; });
|
||||
const script = _.map(knownParams, function (val, key) {
|
||||
// painless expects params.[key] while groovy and expression languages expect [key] only.
|
||||
const valuePrefix = field.lang === 'painless' ? 'params.' : '';
|
||||
return '(' + field.script + ')' + operators[key] + valuePrefix + key;
|
||||
}).join(' && ');
|
||||
|
||||
const value = _.map(params, function (val, key) {
|
||||
const value = _.map(knownParams, function (val, key) {
|
||||
return operators[key] + field.format.convert(val);
|
||||
}).join(' ');
|
||||
|
||||
_.set(filter, 'script.script', { inline: script, params: params, lang: field.lang });
|
||||
_.set(filter, 'script.script', { inline: script, params: knownParams, lang: field.lang });
|
||||
filter.script.script.params.value = value;
|
||||
filter.meta.field = field.name;
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue