diff --git a/public/app/plugins/datasource/elasticsearch/query_builder.ts b/public/app/plugins/datasource/elasticsearch/query_builder.ts index 98c994cbfcd..f93566c2cd3 100644 --- a/public/app/plugins/datasource/elasticsearch/query_builder.ts +++ b/public/app/plugins/datasource/elasticsearch/query_builder.ts @@ -125,7 +125,14 @@ export class ElasticQueryBuilder { documentQuery(query: any, size: number) { query.size = size; query.sort = {}; - query.sort[this.timeField] = { order: 'desc', unmapped_type: 'boolean' }; + query.sort = [ + { + [this.timeField]: { order: 'desc', unmapped_type: 'boolean' }, + }, + { + _doc: { order: 'desc' }, + }, + ]; // fields field not supported on ES 5.x if (this.esVersion < 5) { diff --git a/public/app/plugins/datasource/elasticsearch/specs/query_builder.test.ts b/public/app/plugins/datasource/elasticsearch/specs/query_builder.test.ts index 162a2112eea..29144176f90 100644 --- a/public/app/plugins/datasource/elasticsearch/specs/query_builder.test.ts +++ b/public/app/plugins/datasource/elasticsearch/specs/query_builder.test.ts @@ -224,12 +224,7 @@ describe('ElasticQueryBuilder', () => { ], }, }, - sort: { - '@timestamp': { - order: 'desc', - unmapped_type: 'boolean', - }, - }, + sort: [{ '@timestamp': { order: 'desc', unmapped_type: 'boolean' } }, { _doc: { order: 'desc' } }], script_fields: {}, }); }); @@ -552,7 +547,10 @@ describe('ElasticQueryBuilder', () => { }; expect(query.query).toEqual(expectedQuery); - expect(query.sort).toEqual({ '@timestamp': { order: 'desc', unmapped_type: 'boolean' } }); + expect(query.sort).toEqual([ + { '@timestamp': { order: 'desc', unmapped_type: 'boolean' } }, + { _doc: { order: 'desc' } }, + ]); const expectedAggs = { 2: {