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

ElasticSearch 进行更新操作的时候,能否保留旧版本的数据?

  •  
  •   xia0ta0 · 2015-03-16 10:05:39 +08:00 · 10114 次点击
    这是一个创建于 3574 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在做一个类似wiki的东西,需要保存历次的修改记录。

    之前一直考虑couchdb,作为文档数据库,只是增加新的版本,之前的数据默认是不删除的;

    因为需要搜索功能,不希望增加数据库的数量,打算直接用Elasticsearch。但ES更新数据之后,旧的version会删除,有什么好的方法解决这个问题吗?
    4 条回复    2015-03-16 15:14:02 +08:00
    tkliuxing
        1
    tkliuxing  
       2015-03-16 11:55:24 +08:00   ❤️ 1
    据我了解,ES用_version是来控制一致性的: http://www.elastic.co/guide/en/elasticsearch/guide/current/optimistic-concurrency-control.html
    自己定义字段和逻辑,每次新增呗。
    xia0ta0
        2
    xia0ta0  
    OP
       2015-03-16 14:45:18 +08:00
    @tkliuxing 文中提到了怎样显式控制_version字段,但旧的版本还是会删除的。不过还是要谢谢你啦!
    halfelf
        3
    halfelf  
       2015-03-16 14:48:54 +08:00   ❤️ 1
    es的version不是来保存历史的。如果需要保留历史,通常必须多加东西。
    比如
    1. 曾加单独的列保存所有历史 { "data": "new data", "date": "xxxx-xx-xx", "history": [ {"data": "old 1", "date": "yyyy-yy-yy" }, {"data": "old 2", "date": "zzzz-zz-zz"}] }
    2. 简单的增加纪录, {"data": "new data", "current": true} {"data": "old", "current": false}
    3. 把历史纪录存到其他备份index
    xia0ta0
        4
    xia0ta0  
    OP
       2015-03-16 15:14:02 +08:00
    @halfelf 看来只能这样做了:)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3531 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:28 · PVG 18:28 · LAX 02:28 · JFK 05:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.