我有一个基于浮动类型字段的不正确排序的问题。我的数据中有一个名为gtd_sort_number
的浮点型字段(参见下面的数据示例)。值是一个微时间,所以它很长,带有十进制值(如下面的例子所示)。现在,当我执行如下所示的查询(第二个示例)时,结果集没有正确排序。有些项目的顺序是正确的,有些则不是。第一个示例显示了从查询返回的数据,因此您可以看到"sort": [1412944380]
添加到结果中。在我看来,ES以某种方式舍入前一个值,然后对其进行排序,因此它会产生错误的结果,因为它会将不同(相似)的值舍入为相同的值。
你知道这是怎么回事吗?
{
"_index": "netnotes",
"_type": "activity",
"_id": "a53ab53ba52b3f03bf8e547a0633dc3f",
"_score": null,
"_source": {
"id": "a53ab53ba52b3f03bf8e547a0633dc3f",
"gtd_sort_number": 1412944355.6989,
"gtd_section_id": "37aee9eb-e836-41f1-89a8-8d173fe23d57",
"gtd_board_id": "0d7b113b24d53a5a9ca50345173c4c49",
"gtd_color": "#000000",
"gtd_type": "note",
"gtd_label": "",
"gtd_private": null
},
"sort": [
1412944380
]
}
查询示例
GET /netnotes/activity/_search
{
"query": {
"match_all": {}
},
"post_filter": {
"term": {
"gtd_board_id": "0d7b113b24d53a5a9ca50345173c4c49"
}
},
"sort": {
"gtd_sort_number": "desc"
},
"from": 0
}
发布于 2014-10-13 23:11:35
这可能是因为浮点数无法保存您的数字,这意味着它没有必要的精度和位数来保存该数字。您可能希望将映射从"float“更改为"double”。
https://stackoverflow.com/questions/26334026
复制相似问题