要解决这个问题,你可以使用Elasticsearch的排序功能,并将id字段设置为keyword类型。然后,在进行排序时,可以使用"numeric"排序模式来确保按照数字大小进行排序。

具体的步骤如下:

  1. 确保id字段的mapping设置为keyword类型,示例如下:
{
  "mappings": {
    "properties": {
      "id": {
        "type": "keyword"
      },
      // 其他字段...
    }
  }
}
  1. 在查询中使用"numeric"排序模式对id字段进行排序,示例如下:
{
  "query": {
    // 查询条件...
  },
  "sort": [
    {
      "id": {
        "order": "asc",
        "mode": "min",
        "numeric_type": "long"
      }
    }
  ]
}

这样,Elasticsearch将会按照数字大小对id字段进行排序,得到正确的结果:1,2,3,4,10,11等

Elasticsearch 根据数字大小对id进行排序后结果为11011234……如何解决

原文地址: https://www.cveoy.top/t/topic/is8d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录