[data.search.aggs] Use fields instead of _source in top_hits agg (#109531)

* [data.search] Handle warnings inside of headers

* Update docs

* Add tests

* Remove isWarningResponse

* [data.search.aggs] Use fields instead of _source in top_hits agg

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Lukas Olson 2021-09-22 13:36:39 -07:00 committed by GitHub
parent f4c2a934f0
commit 02b2a4d086
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 15 deletions

View file

@ -133,28 +133,28 @@ describe('Top hit metric', () => {
});
it('should request the _source field', () => {
init({ field: '_source' });
expect(aggDsl.top_hits._source).toBeTruthy();
expect(aggDsl.top_hits.docvalue_fields).toBeUndefined();
init({ fieldName: '_source' });
expect(aggDsl.top_hits._source).toBe(true);
expect(aggDsl.top_hits.fields).toBeUndefined();
});
it('requests both source and docvalues_fields for non-text aggregatable fields', () => {
it('requests fields for non-text aggregatable fields', () => {
init({ fieldName: 'bytes', readFromDocValues: true });
expect(aggDsl.top_hits._source).toBe('bytes');
expect(aggDsl.top_hits.docvalue_fields).toEqual([{ field: 'bytes' }]);
expect(aggDsl.top_hits._source).toBe(false);
expect(aggDsl.top_hits.fields).toEqual([{ field: 'bytes' }]);
});
it('requests both source and docvalues_fields for date aggregatable fields', () => {
it('requests fields for date aggregatable fields', () => {
init({ fieldName: '@timestamp', readFromDocValues: true, fieldType: KBN_FIELD_TYPES.DATE });
expect(aggDsl.top_hits._source).toBe('@timestamp');
expect(aggDsl.top_hits.docvalue_fields).toEqual([{ field: '@timestamp', format: 'date_time' }]);
expect(aggDsl.top_hits._source).toBe(false);
expect(aggDsl.top_hits.fields).toEqual([{ field: '@timestamp', format: 'date_time' }]);
});
it('requests just source for aggregatable text fields', () => {
it('requests fields for aggregatable text fields', () => {
init({ fieldName: 'machine.os' });
expect(aggDsl.top_hits._source).toBe('machine.os');
expect(aggDsl.top_hits.docvalue_fields).toBeUndefined();
expect(aggDsl.top_hits._source).toBe(false);
expect(aggDsl.top_hits.fields).toEqual([{ field: 'machine.os' }]);
});
describe('try to get the value from the top hit', () => {

View file

@ -78,8 +78,8 @@ export const getTopHitMetricAgg = () => {
},
};
} else {
if (field.readFromDocValues) {
output.params.docvalue_fields = [
if (field.name !== '_source') {
output.params.fields = [
{
field: field.name,
// always format date fields as date_time to avoid
@ -89,7 +89,7 @@ export const getTopHitMetricAgg = () => {
},
];
}
output.params._source = field.name === '_source' ? true : field.name;
output.params._source = field.name === '_source';
}
},
},