因为我现有的 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 字段重复。这样的话,有什么解决办法吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.