Elasticsearch: Sort results by index order as well as @timestamp (#29761)

* Elasticsearch - sort results by index order as well as timestamp.

* Fix test.
This commit is contained in:
STEELBADGE
2021-01-14 08:41:57 +00:00
committed by GitHub
parent e1f213f4af
commit 67fc9b61ba
2 changed files with 13 additions and 8 deletions
@@ -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) {
@@ -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: {