[data views] Stored fields are always requested, we don't need logic around it (#171815)

## Summary

Stored field handling is basically a dead code path. `['*']` is always
sent so lets push this closer to the query.

---------

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Matthew Kime 2023-11-30 14:29:12 -06:00 committed by GitHub
parent f98f282388
commit 2403bc8c88
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 22 additions and 25 deletions

View file

@ -108,7 +108,7 @@ export const buildDataViewMock = ({
fields: dataViewFields, fields: dataViewFields,
type: 'default', type: 'default',
getName: () => name, getName: () => name,
getComputedFields: () => ({ docvalueFields: [], scriptFields: {}, storedFields: ['*'] }), getComputedFields: () => ({ docvalueFields: [], scriptFields: {} }),
getSourceFiltering: () => ({}), getSourceFiltering: () => ({}),
getIndexPattern: () => `${name}-title`, getIndexPattern: () => `${name}-title`,
getFieldByName: jest.fn((fieldName: string) => dataViewFields.getByName(fieldName)), getFieldByName: jest.fn((fieldName: string) => dataViewFields.getByName(fieldName)),

View file

@ -281,7 +281,6 @@ describe('SearchSource', () => {
searchSource.setField('index', { searchSource.setField('index', {
...indexPattern, ...indexPattern,
getComputedFields: () => ({ getComputedFields: () => ({
storedFields: ['hello'],
scriptFields: { world: {} }, scriptFields: { world: {} },
docvalueFields: ['@timestamp'], docvalueFields: ['@timestamp'],
runtimeFields, runtimeFields,
@ -289,7 +288,7 @@ describe('SearchSource', () => {
} as unknown as DataView); } as unknown as DataView);
const request = searchSource.getSearchRequestBody(); const request = searchSource.getSearchRequestBody();
expect(request.stored_fields).toEqual(['hello']); expect(request.stored_fields).toEqual(['*']);
expect(request.script_fields).toEqual({ world: {} }); expect(request.script_fields).toEqual({ world: {} });
expect(request.fields).toEqual(['@timestamp']); expect(request.fields).toEqual(['@timestamp']);
expect(request.runtime_mappings).toEqual(runtimeFields); expect(request.runtime_mappings).toEqual(runtimeFields);

View file

@ -779,12 +779,11 @@ export class SearchSource {
const metaFields = getConfig(UI_SETTINGS.META_FIELDS) ?? []; const metaFields = getConfig(UI_SETTINGS.META_FIELDS) ?? [];
// get some special field types from the index pattern // get some special field types from the index pattern
const { docvalueFields, scriptFields, storedFields, runtimeFields } = index const { docvalueFields, scriptFields, runtimeFields } = index
? index.getComputedFields() ? index.getComputedFields()
: { : {
docvalueFields: [], docvalueFields: [],
scriptFields: {}, scriptFields: {},
storedFields: ['*'],
runtimeFields: {}, runtimeFields: {},
}; };
const fieldListProvided = !!body.fields; const fieldListProvided = !!body.fields;
@ -798,7 +797,7 @@ export class SearchSource {
...scriptFields, ...scriptFields,
} }
: {}; : {};
body.stored_fields = storedFields; body.stored_fields = ['*'];
body.runtime_mappings = runtimeFields || {}; body.runtime_mappings = runtimeFields || {};
// apply source filters from index pattern if specified by the user // apply source filters from index pattern if specified by the user

View file

@ -136,10 +136,6 @@ describe('IndexPattern', () => {
expect(indexPattern.getComputedFields).toBeInstanceOf(Function); expect(indexPattern.getComputedFields).toBeInstanceOf(Function);
}); });
test('should request all stored fields', () => {
expect(indexPattern.getComputedFields().storedFields).toContain('*');
});
test('should request date fields as docvalue_fields', () => { test('should request date fields as docvalue_fields', () => {
const { docvalueFields } = indexPattern.getComputedFields(); const { docvalueFields } = indexPattern.getComputedFields();
const docValueFieldNames = docvalueFields.map((field) => field.field); const docValueFieldNames = docvalueFields.map((field) => field.field);

View file

@ -85,7 +85,6 @@ export class DataView extends AbstractDataView implements DataViewBase {
const scriptFields: Record<string, estypes.ScriptField> = {}; const scriptFields: Record<string, estypes.ScriptField> = {};
if (!this.fields) { if (!this.fields) {
return { return {
storedFields: ['*'],
scriptFields, scriptFields,
docvalueFields: [] as Array<{ field: string; format: string }>, docvalueFields: [] as Array<{ field: string; format: string }>,
runtimeFields: {}, runtimeFields: {},
@ -117,7 +116,6 @@ export class DataView extends AbstractDataView implements DataViewBase {
const runtimeFields = this.getRuntimeMappings(); const runtimeFields = this.getRuntimeMappings();
return { return {
storedFields: ['*'],
scriptFields, scriptFields,
docvalueFields, docvalueFields,
runtimeFields, runtimeFields,

View file

@ -40,7 +40,7 @@ const services = {
describe('Test of <Doc /> helper / hook', () => { describe('Test of <Doc /> helper / hook', () => {
test('buildSearchBody given useNewFieldsApi is false', () => { test('buildSearchBody given useNewFieldsApi is false', () => {
const dataView = { const dataView = {
getComputedFields: () => ({ storedFields: [], scriptFields: [], docvalueFields: [] }), getComputedFields: () => ({ scriptFields: [], docvalueFields: [] }),
} as unknown as DataView; } as unknown as DataView;
const actual = buildSearchBody('1', index, dataView, false); const actual = buildSearchBody('1', index, dataView, false);
expect(actual).toMatchInlineSnapshot(` expect(actual).toMatchInlineSnapshot(`
@ -67,7 +67,9 @@ describe('Test of <Doc /> helper / hook', () => {
}, },
}, },
"script_fields": Array [], "script_fields": Array [],
"stored_fields": Array [], "stored_fields": Array [
"*",
],
"version": true, "version": true,
}, },
} }
@ -76,7 +78,7 @@ describe('Test of <Doc /> helper / hook', () => {
test('buildSearchBody useNewFieldsApi is true', () => { test('buildSearchBody useNewFieldsApi is true', () => {
const dataView = { const dataView = {
getComputedFields: () => ({ storedFields: [], scriptFields: [], docvalueFields: [] }), getComputedFields: () => ({ scriptFields: [], docvalueFields: [] }),
} as unknown as DataView; } as unknown as DataView;
const actual = buildSearchBody('1', index, dataView, true); const actual = buildSearchBody('1', index, dataView, true);
expect(actual).toMatchInlineSnapshot(` expect(actual).toMatchInlineSnapshot(`
@ -108,7 +110,9 @@ describe('Test of <Doc /> helper / hook', () => {
}, },
"runtime_mappings": Object {}, "runtime_mappings": Object {},
"script_fields": Array [], "script_fields": Array [],
"stored_fields": Array [], "stored_fields": Array [
"*",
],
"version": true, "version": true,
}, },
} }
@ -117,7 +121,7 @@ describe('Test of <Doc /> helper / hook', () => {
test('buildSearchBody with requestSource', () => { test('buildSearchBody with requestSource', () => {
const dataView = { const dataView = {
getComputedFields: () => ({ storedFields: [], scriptFields: [], docvalueFields: [] }), getComputedFields: () => ({ scriptFields: [], docvalueFields: [] }),
} as unknown as DataView; } as unknown as DataView;
const actual = buildSearchBody('1', index, dataView, true, true); const actual = buildSearchBody('1', index, dataView, true, true);
expect(actual).toMatchInlineSnapshot(` expect(actual).toMatchInlineSnapshot(`
@ -150,7 +154,9 @@ describe('Test of <Doc /> helper / hook', () => {
}, },
"runtime_mappings": Object {}, "runtime_mappings": Object {},
"script_fields": Array [], "script_fields": Array [],
"stored_fields": Array [], "stored_fields": Array [
"*",
],
"version": true, "version": true,
}, },
} }
@ -160,7 +166,6 @@ describe('Test of <Doc /> helper / hook', () => {
test('buildSearchBody with runtime fields', () => { test('buildSearchBody with runtime fields', () => {
const dataView = { const dataView = {
getComputedFields: () => ({ getComputedFields: () => ({
storedFields: [],
scriptFields: [], scriptFields: [],
docvalueFields: [], docvalueFields: [],
runtimeFields: { runtimeFields: {
@ -210,7 +215,9 @@ describe('Test of <Doc /> helper / hook', () => {
}, },
}, },
"script_fields": Array [], "script_fields": Array [],
"stored_fields": Array [], "stored_fields": Array [
"*",
],
"version": true, "version": true,
}, },
} }

View file

@ -131,7 +131,7 @@ export function buildSearchBody(
filter: [{ ids: { values: [id] } }, { term: { _index: index } }], filter: [{ ids: { values: [id] } }, { term: { _index: index } }],
}, },
}, },
stored_fields: computedFields.storedFields, stored_fields: ['*'],
script_fields: computedFields.scriptFields, script_fields: computedFields.scriptFields,
version: true, version: true,
}, },

View file

@ -91,7 +91,7 @@ export const buildDataViewMock = ({
metaFields: ['_index', '_score'], metaFields: ['_index', '_score'],
fields: dataViewFields, fields: dataViewFields,
getName: () => name, getName: () => name,
getComputedFields: () => ({ docvalueFields: [], scriptFields: {}, storedFields: ['*'] }), getComputedFields: () => ({ docvalueFields: [], scriptFields: {} }),
getSourceFiltering: () => ({}), getSourceFiltering: () => ({}),
getFieldByName: jest.fn((fieldName: string) => dataViewFields.getByName(fieldName)), getFieldByName: jest.fn((fieldName: string) => dataViewFields.getByName(fieldName)),
timeFieldName: timeFieldName || '', timeFieldName: timeFieldName || '',

View file

@ -100,7 +100,7 @@ export const buildDataViewMock = ({
fields: dataViewFields, fields: dataViewFields,
type: 'default', type: 'default',
getName: () => name, getName: () => name,
getComputedFields: () => ({ docvalueFields: [], scriptFields: {}, storedFields: ['*'] }), getComputedFields: () => ({ docvalueFields: [], scriptFields: {} }),
getSourceFiltering: () => ({}), getSourceFiltering: () => ({}),
getIndexPattern: () => `${name}-title`, getIndexPattern: () => `${name}-title`,
getFieldByName: jest.fn((fieldName: string) => dataViewFields.getByName(fieldName)), getFieldByName: jest.fn((fieldName: string) => dataViewFields.getByName(fieldName)),

View file

@ -49,7 +49,6 @@ export const createIndexPatternMock = ({
getComputedFields: () => ({ getComputedFields: () => ({
runtimeFields: runtimeFields ?? {}, runtimeFields: runtimeFields ?? {},
scriptFields: {}, scriptFields: {},
storedFields: [],
docvalueFields: [], docvalueFields: [],
}), }),
getRuntimeMappings: () => runtimeFields ?? {}, getRuntimeMappings: () => runtimeFields ?? {},

View file

@ -99,7 +99,6 @@ export const createIndexPatternMock = ({
return accumulatedRuntimeFields; return accumulatedRuntimeFields;
}, {}), }, {}),
scriptFields: {}, scriptFields: {},
storedFields: [],
}), }),
}; };
}; };