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

2023-11-03 21:50:56 +08:00
 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 字段重复。这样的话,有什么解决办法吗?

1280 次点击
所在节点    Elasticsearch
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/988441

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX