• Elasticsearch之更新(全部更新和局部更新)


      前面的基础,

    Elasticsearch之curl创建索引库

    Elasticsearch之curl创建索引

    Elasticsearch之curl创建索引库和索引时注意事项

    Elasticsearch之cur查询索引

      首先,明确一个概念,es包括全部更新和局部更新

    ES全部更新

      ES可以使用PUT或者POST对文档进行更新(全部更新),如果指定ID的文档已经存在,则执行更新操作。

    比如,我这里,id=1文档存在,那么,就是es全部更新。

    注意:

      es执行更新操作的时候,ES首先将旧的文档标记为删除状态,然后添加新的文档,旧的文档不会立即消失,但是你也无法访问,

    ES会在你继续添加更多数据的时候在后台清理已经标记为删除状态的文档。

    ES局部更新

      es为什么需要局部更新?

    这个,从字面意思就知道,当然,不想全部更新时,比如一个指定类型下,很多个id,我不想每个id都涉及等。

      局部更新,可以添加新字段或者更新已有字段(必须使用POST

    [hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?_source=name&pretty'
    {
    "_index" : "zhouls",
    "_type" : "emp",
    "_id" : "1",
    "_version" : 3,
    "found" : true,
    "_source" : {
    "name" : "tom"
    }
    }
    [hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?_source=name,age&pretty'
    {
    "_index" : "zhouls",
    "_type" : "emp",
    "_id" : "1",
    "_version" : 3,
    "found" : true,
    "_source" : {
    "age" : 25,
    "name" : "tom"
    }
    }
    [hadoop@djt002 elasticsearch-2.4.3]$

    [hadoop@djt002 elasticsearch-2.4.3]$ curl -XPOST 'http://192.168.80.200:9200/zhouls/emp/1/_update' -d '{"doc":{"name":"mack"}}'
    {"_index":"zhouls","_type":"emp","_id":"1","_version":4,"_shards":{"total":2,"successful":1,"failed":0}}[hadoop@djt002 elasticsearch-2.4.3]$
    [hadoop@djt002 elasticsearch-2.4.3]$
    [hadoop@djt002 elasticsearch-2.4.3]$
    [hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?_source=name&pretty'
    {
    "_index" : "zhouls",
    "_type" : "emp",
    "_id" : "1",
    "_version" : 4,
    "found" : true,
    "_source" : {
    "name" : "mack"                成功更改了name
    }
    }
    [hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?pretty'
    {
    "_index" : "zhouls",
    "_type" : "emp",
    "_id" : "1",
    "_version" : 4,
    "found" : true,
    "_source" : {
    "name" : "mack",
    "age" : 25
    }
    }
    [hadoop@djt002 elasticsearch-2.4.3]$

    总结:

    ES全部更新,使用PUT或者POST

    ES局部更新,使用POST

    ES的全部更新和局部更新,底层有什么区别?

    答:全部更新,是直接把之前的老数据,标记为删除状态,然后,再添加一条更新的。

          局域更新,只是修改某个字段。

  • 相关阅读:
    javascript打开本地应用
    SDUT OJ -2892 A
    恳请CSDN的活动可以落实
    中国银联mPOS通用技术安全分析和规范解读
    UNIX环境编程学习——反思认识
    STM32F407VG (五)定时器
    请求的链式处理——责任链模式
    Shredding Company (hdu 1539 dfs)
    十天精通CSS3(6)
    十天精通CSS3(5)
  • 原文地址:https://www.cnblogs.com/zlslch/p/6421577.html
Copyright © 2020-2023  润新知