diff --git a/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_caps_response.test.js b/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_caps_response.test.js index 88d2d873521cb0..d9a284d34de6be 100644 --- a/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_caps_response.test.js +++ b/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_caps_response.test.js @@ -144,6 +144,13 @@ describe('index_patterns/field_capabilities/field_caps_response', () => { expect(child).toHaveProperty('subType', { nested: { path: 'nested_object_parent' } }); }); + it('returns nested sub-fields as non-aggregatable', () => { + const fields = readFieldCapsResponse(esResponse); + // Normally a keyword field would be aggregatable, but the fact that it is nested overrides that + const child = fields.find(f => f.name === 'nested_object_parent.child.keyword'); + expect(child).toHaveProperty('aggregatable', false); + }); + it('handles fields that are both nested and multi', () => { const fields = readFieldCapsResponse(esResponse); const child = fields.find(f => f.name === 'nested_object_parent.child.keyword'); diff --git a/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_caps_response.ts b/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_caps_response.ts index 06eb30db0b24bb..2215bd8a95a1d0 100644 --- a/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_caps_response.ts +++ b/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_caps_response.ts @@ -182,6 +182,14 @@ export function readFieldCapsResponse(fieldCapsResponse: FieldCapsResponse): Fie if (Object.keys(subType).length > 0) { field.subType = subType; + + // We don't support aggregating on nested fields, trying to do so in the UI will return + // blank results. For now we will stop showing nested fields as an option for aggregation. + // Once we add support for nested fields this condition should be removed and old index + // patterns should be migrated. + if (field.subType.nested) { + field.aggregatable = false; + } } } }); diff --git a/test/api_integration/apis/index_patterns/fields_for_wildcard_route/response.js b/test/api_integration/apis/index_patterns/fields_for_wildcard_route/response.js index bc70339bd1a665..d72722af06bffb 100644 --- a/test/api_integration/apis/index_patterns/fields_for_wildcard_route/response.js +++ b/test/api_integration/apis/index_patterns/fields_for_wildcard_route/response.js @@ -72,7 +72,7 @@ export default function ({ getService }) { readFromDocValues: true, }, { - aggregatable: true, + aggregatable: false, esTypes: [ 'keyword' ], @@ -156,7 +156,7 @@ export default function ({ getService }) { readFromDocValues: true, }, { - aggregatable: true, + aggregatable: false, esTypes: [ 'keyword' ],