elasticsearch 从 5.x 版本后就不允许使用 _id 字段进行排序了. 想问问新版本有什么办法?

查看 21|回复 0
作者:no13bus   
因为我现有的 es 数据库里面的 _id 字段写入的时候是递增写入的,格式类似这样的: "w:1", "w:2", "w:3"...."w:100", 我想让搜索到的数据按照 w 后面的数字进行排序。但是因为我目前的版本是 8.x 版本,从 5.x 版本后就已经不允许 es 数据库按 _id 进行排序了。有解决方案是增加一个新的字段,将 _id 里面的值复制到新字段里面去。但是目前这个数据库已经存在了, _id 的写入逻辑我无权控制, 我目前只是可以增加字段。
然后我看到了一个 copy_to 的功能, 就想着直接增加一个新的 field 到 index 数据库里面去,这样每次插入的时候,自动复制 _id 的值到 id 字段上,然后搜索的时候就直接用 id 对结果进行排序就好了。但是试了下不行,增加新 id 的句子如下:
PUT /my_index4
{
  "mappings": {
    "properties": {
      "_id": {"type": "keyword", "copy_to": "id"},
      "name": {"type": "text", "copy_to": "total"},
      "age": {"type": "integer"},
      "type": {"type": "keyword"},
      "id": {"type": "keyword", "store": true}
    }
  }
}
直接报错了,说 _id 字段重复。这样的话,有什么解决办法吗?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部