zoukankan      html  css  js  c++  java
  • 17.全量替换、强制创建、删除

    主要知识点

    1、document的全量替换

    2、document的强制创建

    3、document的删除

    1、document的全量替换

    (1)语法与创建文档是一样的,如果document id不存在,那么就是创建;如果document id已经存在,那么就是全量替换操作,替换document的json串内容,但是 "_version": 的值会改变,原来被替换的内容并没有被删除掉,只是被标记为deleted。只有当es的数据越来越多时,es会把标记为deleted的数据进行物理删除,以释放空间。

    (2)document是不可变的,如果要修改document的内容,第一种方式就是全量替换,直接对document重新建立索引,替换里面所有的内容

    (3)es会将老的document标记为deleted,然后新增我们给定的一个document,当我们创建越来越多的document的时候,es会在适当的时机在后台自动删除标记为deleted的document

    2、document的强制创建

    (1)创建文档与全量替换的语法是一样的,有时我们只是想新建文档,不想替换文档,如果强制进行创建呢?

    (2)PUT /index/type/id?op_type=create,

    PUT /index/type/id/_create

    所创建的文档的id如果已存在就会报错

    {

      "error": {

        "root_cause": [

          {

            "type": "version_conflict_engine_exception",

            "reason": "[text_type][2]: version conflict, document already exists (current version [1])",

            "index_uuid": "d5YEp9EjTKevAC315oXfwA",

            "shard": "2",

            "index": "test_index"

          }

        ],

        "type": "version_conflict_engine_exception",

        "reason": "[text_type][2]: version conflict, document already exists (current version [1])",

        "index_uuid": "d5YEp9EjTKevAC315oXfwA",

        "shard": "2",

        "index": "test_index"

      },

      "status": 409

    }

    3、document的删除

    (1)DELETE /index/type/id

    (2)不会立即物理删除,只会将其标记为deleted,当数据越来越多的时候,在后台自动删除

  • 相关阅读:
    BZOJ1042: [HAOI2008]硬币购物
    BZOJ1089: [SCOI2003]严格n元树
    BZOJ1060: [ZJOI2007]时态同步
    BZOJ2697: 特技飞行
    BZOJ2464: 中山市选[2009]小明的游戏
    BZOJ1430: 小猴打架
    BZOJ3675: [Apio2014]序列分割
    BZOJ2453: 维护队列
    BZOJ2120: 数颜色
    BZOJ4547: Hdu5171 小奇的集合
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8436605.html
Copyright © 2011-2022 走看看