Skip to content

Commit

Permalink
Fix sorting on scripted date and boolean fields
Browse files Browse the repository at this point in the history
Backports PR #9261

**Commit 1:**
Fix sorting on scripted date and boolean fields

The elasticsearch API only [supports][1][2] sort scripts of type `number` and
`string`. Since dates need to be returned as millis since the epoch for
visualizations to work anyway, we can simply add a condition to send dates
as type number in the sort API. ES will cast booleans if we tell them
its a string, so we can add a similar condition there as well.

[1]: https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-request-sort.html#_script_based_sorting
[2]: https://github.com/elastic/elasticsearch/blob/aeb97ff41298e26b107a733837dfe17f123c0c9b/core/src/main/java/org/elasticsearch/search/sort/ScriptSortBuilder.java#L359

Fixes: #9257

* Original sha: 0d5a824
* Authored by Matthew Bargar <[email protected]> on 2016-11-29T21:05:48Z

**Commit 2:**
Add helpful comment

* Original sha: 14dc396
* Authored by Matthew Bargar <[email protected]> on 2016-11-30T21:02:41Z
  • Loading branch information
elastic-jasper committed Nov 30, 2016
1 parent 17df55c commit 5bc6da6
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion src/ui/public/courier/data_source/_normalize_sort_request.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export default function normalizeSortRequest(config) {
inline: indexField.script,
lang: indexField.lang
},
type: indexField.type,
type: castSortType(indexField.type),
order: direction
};
} else {
Expand All @@ -56,3 +56,20 @@ export default function normalizeSortRequest(config) {
return normalized;
}
};

// The ES API only supports sort scripts of type 'number' and 'string'
function castSortType(type) {
const typeCastings = {
number: 'number',
string: 'string',
date: 'number',
boolean: 'string'
};

const castedType = typeCastings[type];
if (!castedType) {
throw new Error(`Unsupported script sort type: ${type}`);
}

return castedType;
}

0 comments on commit 5bc6da6

Please sign in to comment.