• ES Docs-3:Modifying Data


    Modifying Data

    Indexing/Replacing Documents

    curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
    {
      "name": "John Doe"
    }'
    

    If we then executed the above command again with a different (or same) document, Elasticsearch will replace (i.e. reindex) a new document on top of the existing one with the ID of 1

    curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
    {
      "name": "Micheal"
    }'
    

    If, on the other hand, we use a different ID, a new document will be indexed and the existing document(s) already in the index remains untouched.

    we are using the POST verb instead of PUT since we didn’t specify an ID.

    curl -XPOST 'localhost:9200/customer/external?pretty' -d '
    {
      "name": "Jane Doe"
    }'
    

    Updating Documents

    This example shows how to update our previous document (ID of 1) by changing the name field to "Jane Doe":
    改变name field

    curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
    {
      "doc": { "name": "Jane Doe" }
    }'
    

    添加age field

    curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
    {
      "doc": { "name": "Jane Doe", "age": 20 }
    }'
    

    脚本更新(失败)

    curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
    {
      "script" : "ctx._source.age += 5"
    }'
    

    返回

    {
      "error" : {
        "root_cause" : [ {
          "type" : "remote_transport_exception",
          "reason" : "[es_node_1][127.0.0.1:9300][indices:data/write/update[s]]"
        } ],
        "type" : "illegal_argument_exception",
        "reason" : "failed to execute script",
        "caused_by" : {
          "type" : "script_exception",
          "reason" : "scripts of type [inline], operation [update] and lang [groovy] are disabled"
        }
      },
      "status" : 400
    }
    

    Deleting Documents

    根据ID删除Doc

    es@qiandu1-yuwencai:~/cluster/elasticsearch-2.3.1$ curl -XDELETE 'localhost:9200/customer/external/2?pretty'
    

    返回

    {
      "found" : true,
      "_index" : "customer",
      "_type" : "external",
      "_id" : "2",
      "_version" : 2,
      "_shards" : {
        "total" : 2,
        "successful" : 1,
        "failed" : 0
      }
    }
    
    

    The delete-by-query plugin can delete all documents matching a specific query.

    Batch Processing

    _bulk API

    curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -d '
    {"index":{"_id":"1"}}
    {"name": "John Doe" }
    {"index":{"_id":"2"}}
    {"name": "Jane Doe" }
    '
    

    返回

    {
      "took" : 17,
      "errors" : false,
      "items" : [ {
        "index" : {
          "_index" : "customer",
          "_type" : "external",
          "_id" : "1",
          "_version" : 5,
          "_shards" : {
            "total" : 2,
            "successful" : 1,
            "failed" : 0
          },
          "status" : 200
        }
      }, {
        "index" : {
          "_index" : "customer",
          "_type" : "external",
          "_id" : "2",
          "_version" : 1,
          "_shards" : {
            "total" : 2,
            "successful" : 1,
            "failed" : 0
          },
          "status" : 201
        }
      } ]
    }
    

    当然,也可以进行索引的更新和删除操作,不过删除操作没有参数

    {"update":{"_id":"1"}}
    {"doc": { "name": "John Doe becomes Jane Doe" } }
    {"delete":{"_id":"2"}}
    

    This functionality is important in that it provides a very efficient mechanism to do multiple operations as fast as possible with as little network roundtrips as possible.

    The bulk API executes all the actions sequentially and in order. If a single action fails for whatever reason, it will continue to process the remainder of the actions after it. When the bulk API returns, it will provide a status for each action (in the same order it was sent in) so that you can check if a specific action failed or not.

    参考资料

    来源: https://www.elastic.co/guide/en/elasticsearch/reference/current/_batch_processing.html

  • 相关阅读:
    C# 控制台应用程序输出颜色字体[更正版]
    ORM for Net主流框架汇总与效率测试
    php 去掉字符串的最后一个字符
    bzoj1185 [HNOI2007]最小矩形覆盖 旋转卡壳求凸包
    bzoj [Noi2008] 1061 志愿者招募 单纯形
    bzoj1009 [HNOI2008] GT考试 矩阵乘法+dp+kmp
    扩展欧几里得(ex_gcd),中国剩余定理(CRT)讲解 有代码
    BZOJ 2103/3302/2447 消防站 树的重心【DFS】【TreeDP】
    hihocoder 1449 后缀自动机三·重复旋律6
    hihocoder 后缀自动机二·重复旋律5
  • 原文地址:https://www.cnblogs.com/myitroad/p/5405482.html
Copyright © 2020-2023  润新知