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