Elasticsearch(七)| update(更新)的命令行
update是常用操作,官方地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html
直接通过id更新(_update)
最直接的就是通过id进行更新:
curl --cacert http_ca.crt -u elastic -XPOST https://localhost:9200/test_record/_update/qDK5HIQB8xpN1Xtdcm4P?pretty  -H 'Content-Type: application/json' -d '{"script":{"source":"ctx._source.counts--","lang":"painless"}}'
上面的命令会把id为qDK5HIQB8xpN1Xtdcm4P,字段为counts的值减1。
如果要同时修改多个id要怎么做呢?直接用{}即可。
https://localhost:9200/test_record/_update/{qDK5HIQB8xpN1Xtdcm4P,qTK5HIQB8xpN1Xtdm245}?pretty
如果正确返回下面的结果:
{
  "_index" : "test_record",
  "_id" : "vdoNN4QBHJgRqN7h6HeV",
  "_version" : 3,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 31,
  "_primary_term" : 4
}
{
  "_index" : "test_record",
  "_id" : "qjK5HIQB8xpN1Xtdy25q",
  "_version" : 3,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 32,
  "_primary_term" : 4
}
通过查询id更新(_update_by_query)
上面的id也可以通过查询进行更新操作:
curl --cacert http_ca.crt -u elastic -XPOST https://localhost:9200/test_record/_update_by_query?pretty  -H 'Content-Type: application/json' -d '{"query":{"terms":{"_id":["qDK5HIQB8xpN1Xtdcm4P","qTK5HIQB8xpN1Xtdm245"]}},"script":{"source":"ctx._source.counts--","lang":"painless"}}'
和上面的效果是一样的,不过从性能上来说上面是发送了2条update命令,更这里只发送了1条update命令。从返回结果也可以看出区别
{
  "took" : 240,
  "timed_out" : false,
  "total" : 2,
  "updated" : 2,
  "deleted" : 0,
  "batches" : 1,
  "version_conflicts" : 0,
  "noops" : 0,
  "retries" : {
    "bulk" : 0,
    "search" : 0
  },
  "throttled_millis" : 0,
  "requests_per_second" : -1.0,
  "throttled_until_millis" : 0,
  "failures" : [ ]
}
通过查询关键字更新(_update_by_query)
curl --cacert http_ca.crt -u elastic -XPOST https://localhost:9200/test_record/_update_by_query?pretty  -H 'Content-Type: application/json' -d'{"query":{"match":{"key":"中华人民共和国"}},"script":{"source":"ctx._source.counts--","lang":"painless"}}'
这条命令是把含关键字为中华人民共和国记录的counts都减1,如果正确就会返回下面的结果
{
  "took" : 184,
  "timed_out" : false,
  "total" : 5,
  "updated" : 5,
  "deleted" : 0,
  "batches" : 1,
  "version_conflicts" : 0,
  "noops" : 0,
  "retries" : {
    "bulk" : 0,
    "search" : 0
  },
  "throttled_millis" : 0,
  "requests_per_second" : -1.0,
  "throttled_until_millis" : 0,
  "failures" : [ ]
}
0
