From 2dd3693dbe027db10695ec89ce63ea5c1836f0ad Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Fri, 16 Jul 2021 09:07:31 -0500 Subject: [PATCH] [rollup index patterns] don't show fields not present in field caps response (#105533) * remove fields not present in field caps response --- ...-server.getcapabilitiesforrollupindices.md | 8 +++---- ...data-server.mergecapabilitieswithfields.md | 4 +--- .../fetcher/lib/map_capabilities.ts | 2 +- .../lib/merge_capabilities_with_fields.ts | 21 ++++++++++++------- src/plugins/data/server/server.api.md | 10 ++++----- .../rollup/index_patterns_extensions.js | 6 +++--- 6 files changed, 26 insertions(+), 25 deletions(-) diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getcapabilitiesforrollupindices.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getcapabilitiesforrollupindices.md index ba2efcc9b75ca..cef5abbbe3755 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getcapabilitiesforrollupindices.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getcapabilitiesforrollupindices.md @@ -7,9 +7,9 @@ Signature: ```typescript -export declare function getCapabilitiesForRollupIndices(indices: { - [key: string]: any; -}): { +export declare function getCapabilitiesForRollupIndices(indices: Record): { [key: string]: any; }; ``` @@ -18,7 +18,7 @@ export declare function getCapabilitiesForRollupIndices(indices: { | Parameter | Type | Description | | --- | --- | --- | -| indices | {
[key: string]: any;
} | | +| indices | Record<string, {
rollup_jobs: any;
}> | | Returns: diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.mergecapabilitieswithfields.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.mergecapabilitieswithfields.md index 2880e2d0d8f2c..4befc100c1089 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.mergecapabilitieswithfields.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.mergecapabilitieswithfields.md @@ -9,7 +9,5 @@ ```typescript mergeCapabilitiesWithFields: (rollupIndexCapabilities: { [key: string]: any; -}, fieldsFromFieldCapsApi: { - [key: string]: any; -}, previousFields?: FieldDescriptor[]) => FieldDescriptor[] +}, fieldsFromFieldCapsApi: Record, previousFields?: FieldDescriptor[]) => FieldDescriptor[] ``` diff --git a/src/plugins/data/server/index_patterns/fetcher/lib/map_capabilities.ts b/src/plugins/data/server/index_patterns/fetcher/lib/map_capabilities.ts index 0a297a309b6ea..19d3c244f4654 100644 --- a/src/plugins/data/server/index_patterns/fetcher/lib/map_capabilities.ts +++ b/src/plugins/data/server/index_patterns/fetcher/lib/map_capabilities.ts @@ -8,7 +8,7 @@ import { mergeJobConfigurations } from './jobs_compatibility'; -export function getCapabilitiesForRollupIndices(indices: { [key: string]: any }) { +export function getCapabilitiesForRollupIndices(indices: Record) { const indexNames = Object.keys(indices); const capabilities = {} as { [key: string]: any }; diff --git a/src/plugins/data/server/index_patterns/fetcher/lib/merge_capabilities_with_fields.ts b/src/plugins/data/server/index_patterns/fetcher/lib/merge_capabilities_with_fields.ts index 7e18d7b054642..f80ae108fb681 100644 --- a/src/plugins/data/server/index_patterns/fetcher/lib/merge_capabilities_with_fields.ts +++ b/src/plugins/data/server/index_patterns/fetcher/lib/merge_capabilities_with_fields.ts @@ -12,7 +12,7 @@ import { FieldDescriptor } from '../index_patterns_fetcher'; export const mergeCapabilitiesWithFields = ( rollupIndexCapabilities: { [key: string]: any }, - fieldsFromFieldCapsApi: { [key: string]: any }, + fieldsFromFieldCapsApi: Record, previousFields: FieldDescriptor[] = [] ) => { const rollupFields = [...previousFields]; @@ -56,16 +56,21 @@ export const mergeCapabilitiesWithFields = ( rollupFields.push( ...fields .filter((field) => !rollupFieldNames.includes(field)) - .map((field) => { + .reduce((collector, field) => { // Expand each field into object format that end consumption expects. const fieldCapsKey = `${field}.${agg}.value`; rollupFieldNames.push(field); - return { - ...fieldsFromFieldCapsApi[fieldCapsKey], - ...defaultField, - name: field, - }; - }) + + // only add fields if they are returned from field caps. they won't exist if there's no data + if (fieldsFromFieldCapsApi[fieldCapsKey]) { + collector.push({ + ...fieldsFromFieldCapsApi[fieldCapsKey], + ...defaultField, + name: field, + }); + } + return collector; + }, []) ); } }); diff --git a/src/plugins/data/server/server.api.md b/src/plugins/data/server/server.api.md index c21024d826462..48fd1c3608aa9 100644 --- a/src/plugins/data/server/server.api.md +++ b/src/plugins/data/server/server.api.md @@ -605,9 +605,9 @@ export type Filter = { // Warning: (ae-missing-release-tag) "getCapabilitiesForRollupIndices" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export function getCapabilitiesForRollupIndices(indices: { - [key: string]: any; -}): { +export function getCapabilitiesForRollupIndices(indices: Record): { [key: string]: any; }; @@ -1143,9 +1143,7 @@ export interface KueryNode { // @public (undocumented) export const mergeCapabilitiesWithFields: (rollupIndexCapabilities: { [key: string]: any; -}, fieldsFromFieldCapsApi: { - [key: string]: any; -}, previousFields?: FieldDescriptor[]) => FieldDescriptor[]; +}, fieldsFromFieldCapsApi: Record, previousFields?: FieldDescriptor[]) => FieldDescriptor[]; // Warning: (ae-missing-release-tag) "METRIC_TYPES" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // diff --git a/x-pack/test/api_integration/apis/management/rollup/index_patterns_extensions.js b/x-pack/test/api_integration/apis/management/rollup/index_patterns_extensions.js index ed874ef183bbb..5cc2c1e60ac77 100644 --- a/x-pack/test/api_integration/apis/management/rollup/index_patterns_extensions.js +++ b/x-pack/test/api_integration/apis/management/rollup/index_patterns_extensions.js @@ -8,7 +8,7 @@ import expect from '@kbn/expect'; import { stringify } from 'query-string'; import { registerHelpers } from './rollup.test_helpers'; -import { INDEX_TO_ROLLUP_MAPPINGS, INDEX_PATTERNS_EXTENSION_BASE_PATH } from './constants'; +import { INDEX_PATTERNS_EXTENSION_BASE_PATH } from './constants'; import { getRandomString } from './lib'; export default function ({ getService }) { @@ -65,9 +65,9 @@ export default function ({ getService }) { const { body } = await supertest.get(uri).expect(200); // Verify that the fields for wildcard correspond to our declared mappings - const propertiesWithMappings = Object.keys(INDEX_TO_ROLLUP_MAPPINGS.properties); + // noting that testTotalField and testTagField are not shown in the field caps results const fieldsForWildcard = body.fields.map((field) => field.name); - expect(fieldsForWildcard.sort()).eql(propertiesWithMappings.sort()); + expect(fieldsForWildcard.sort()).eql(['testCreatedField']); // Cleanup await cleanUp();