我遇到基于浮点类型字段的错误排序问题。我的数据中有一个名为gtd_sort_number
的浮点类型字段(参见下面的数据示例)。值是一个microtime,所以它的十进制值很长(如下例所示)。现在,当我执行如下所示的查询(第二个示例)时,结果集未正确排序。有些项目的顺序不正确。第一个示例显示了从查询返回的数据,因此您可以看到"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
}
答案 0 :(得分:1)
这可能是因为浮点数无法保存您的数字,这意味着它没有必要的精度和位数来保存该数字。 您可能希望更改" float"的映射。 to" double"。