V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
no13bus
V2EX  ›  Elasticsearch

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

  •  
  •   no13bus · 176 天前 · 870 次点击
    这是一个创建于 176 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为我现有的 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 字段重复。这样的话,有什么解决办法吗?

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   883 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:33 · PVG 04:33 · LAX 13:33 · JFK 16:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.