在长浮点字段上排序无法正常工作(ES 1.3.4)

时间:2014-10-13 06:21:22

标签: elasticsearch

我遇到基于浮点类型字段的错误排序问题。我的数据中有一个名为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
}

1 个答案:

答案 0 :(得分:1)

这可能是因为浮点数无法保存您的数字,这意味着它没有必要的精度和位数来保存该数字。 您可能希望更改" float"的映射。 to" double"。

相关问题