From dba8c3d8fc0710eaaefba68f5d79dfda5040151b Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Mon, 10 Feb 2020 16:10:58 -0700 Subject: [PATCH] [Maps] set filter.meta.key to geoFieldName so query passes filterMatchesIndex when ignoreFilterIfFieldNotInIndex is true (#56692) (#57249) * [Maps] set filter.meta.key to geoFieldName so query passes filterMatchesIndex * remove unused variable Co-authored-by: Elastic Machine Co-authored-by: Elastic Machine --- .../filter_manager/lib/mappers/map_spatial_filter.test.ts | 7 +++++-- .../filter_manager/lib/mappers/map_spatial_filter.ts | 8 ++------ .../legacy/plugins/maps/public/elasticsearch_geo_utils.js | 1 + 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/plugins/data/public/query/filter_manager/lib/mappers/map_spatial_filter.test.ts b/src/plugins/data/public/query/filter_manager/lib/mappers/map_spatial_filter.test.ts index fdd029c563cdd6..70876b4e2be774 100644 --- a/src/plugins/data/public/query/filter_manager/lib/mappers/map_spatial_filter.test.ts +++ b/src/plugins/data/public/query/filter_manager/lib/mappers/map_spatial_filter.test.ts @@ -24,6 +24,7 @@ describe('mapSpatialFilter()', () => { test('should return the key for matching multi polygon filter', async () => { const filter = { meta: { + key: 'location', alias: 'my spatial filter', type: esFilters.FILTERS.SPATIAL_FILTER, } as esFilters.FilterMeta, @@ -41,7 +42,7 @@ describe('mapSpatialFilter()', () => { } as esFilters.Filter; const result = mapSpatialFilter(filter); - expect(result).toHaveProperty('key', 'query'); + expect(result).toHaveProperty('key', 'location'); expect(result).toHaveProperty('value', ''); expect(result).toHaveProperty('type', esFilters.FILTERS.SPATIAL_FILTER); }); @@ -49,6 +50,7 @@ describe('mapSpatialFilter()', () => { test('should return the key for matching polygon filter', async () => { const filter = { meta: { + key: 'location', alias: 'my spatial filter', type: esFilters.FILTERS.SPATIAL_FILTER, } as esFilters.FilterMeta, @@ -58,7 +60,7 @@ describe('mapSpatialFilter()', () => { } as esFilters.Filter; const result = mapSpatialFilter(filter); - expect(result).toHaveProperty('key', 'geo_polygon'); + expect(result).toHaveProperty('key', 'location'); expect(result).toHaveProperty('value', ''); expect(result).toHaveProperty('type', esFilters.FILTERS.SPATIAL_FILTER); }); @@ -66,6 +68,7 @@ describe('mapSpatialFilter()', () => { test('should return undefined for none matching', async done => { const filter = { meta: { + key: 'location', alias: 'my spatial filter', } as esFilters.FilterMeta, geo_polygon: { diff --git a/src/plugins/data/public/query/filter_manager/lib/mappers/map_spatial_filter.ts b/src/plugins/data/public/query/filter_manager/lib/mappers/map_spatial_filter.ts index 3cf1cf7835e69b..ed2e5df82e37ea 100644 --- a/src/plugins/data/public/query/filter_manager/lib/mappers/map_spatial_filter.ts +++ b/src/plugins/data/public/query/filter_manager/lib/mappers/map_spatial_filter.ts @@ -20,18 +20,14 @@ import { esFilters } from '../../../../../common'; // Use mapSpatialFilter mapper to avoid bloated meta with value and params for spatial filters. export const mapSpatialFilter = (filter: esFilters.Filter) => { - const metaProperty = /(^\$|meta)/; - const key = Object.keys(filter).find(item => { - return !item.match(metaProperty); - }); if ( - key && filter.meta && + filter.meta.key && filter.meta.alias && filter.meta.type === esFilters.FILTERS.SPATIAL_FILTER ) { return { - key, + key: filter.meta.key, type: filter.meta.type, value: '', }; diff --git a/x-pack/legacy/plugins/maps/public/elasticsearch_geo_utils.js b/x-pack/legacy/plugins/maps/public/elasticsearch_geo_utils.js index 9aa5947062c83b..ec0ae4161b3f2c 100644 --- a/x-pack/legacy/plugins/maps/public/elasticsearch_geo_utils.js +++ b/x-pack/legacy/plugins/maps/public/elasticsearch_geo_utils.js @@ -297,6 +297,7 @@ function createGeometryFilterWithMeta({ type: SPATIAL_FILTER_TYPE, negate: false, index: indexPatternId, + key: geoFieldName, alias: `${geoFieldName} ${relationLabel} ${geometryLabel}`, };