es Update API

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

es Update API 博客分类: 搜索引擎,爬虫

The update API allows to update a document based on a script provided. The operation gets the document (collocated with the shard) from the index, runs the script (with optional script language and parameters), and index back the result (also allows to delete, or ignore the operation). It uses versioning to make sure no updates have happened during the "get" and "reindex".

Note, this operation still means full reindex of the document, it just removes some network roundtrips and reduces chances of version conflicts between the get and the index. The _source field need to be enabled for this feature to work.

For example, lets index a simple doc:

curl -XPUT localhost:9200/test/type1/1-d '{"counter":1,"tags":["red"]}'

Scripted updatesedit

Now, we can execute a script that would increment the counter:

curl -XPOST 'localhost:9200/test/type1/1/_update'-d '{"script":{"inline":"ctx._source.counter += count","params":{"count":4}}}'

We can add a tag to the list of tags (note, if the tag exists, it will still add it, since its a list):

curl -XPOST 'localhost:9200/test/type1/1/_update'-d '{"script":{"inline":"ctx._source.tags += tag","params":{"tag":"blue"}}}'

In addition to _source, the following variables are available through the ctx map: _index, _type, _id, _version, _routing, _parent, _timestamp, _ttl.

We can also add a new field to the document:

curl -XPOST 'localhost:9200/test/type1/1/_update'-d '{"script":"ctx._source.name_of_new_field = \"value_of_new_field\""}'

Or remove a field from the document:

curl -XPOST 'localhost:9200/test/type1/1/_update'-d '{"script":"ctx._source.remove(\"name_of_field\")"}'

And, we can even change the operation that is executed. This example deletes the doc if the tags field contain blue, otherwise it does nothing (noop):

curl -XPOST 'localhost:9200/test/type1/1/_update'-d '{"script":{"inline":"ctx._source.tags.contains(tag) ? ctx.op = \"delete\" : ctx.op = \"none\"","params":{"tag":"blue"}}}'

Updates with a partial documentedit

The update API also support passing a partial document, which will be merged into the existing document (simple recursive merge, inner merging of objects, replacing core "keys/values" and arrays). For example:

curl -XPOST 'localhost:9200/test/type1/1/_update'-d '{"doc":{"name":"new_name"}}'

If both doc and script is specified, then doc is ignored. Best is to put your field pairs of the partial document in the script itself.

Detecting noop updatesedit

If doc is specified its value is merged with the existing _source. By default the document is only reindexed if the new _source field differs from the old. Setting detect_noop to false will cause Elasticsearch to always update the document even if it hasn’t changed. For example:

curl -XPOST 'localhost:9200/test/type1/1/_update'-d '{"doc":{"name":"new_name"},"detect_noop":false}'

If name was new_name before the request was sent then document is still reindexed.

Upsertsedit

If the document does not already exist, the contents of the upsert element will be inserted as a new document. If the document does exist, then the script will be executed instead:

curl -XPOST 'localhost:9200/test/type1/1/_update'-d '{"script":{"inline":"ctx._source.counter += count","params":{"count":4}},"upsert":{"counter":1}}'

scripted_upsertedit

If you would like your script to run regardless of whether the document exists or not — i.e. the script handles initializing the document instead of the upsert element — then set scripted_upsert to true:

curl -XPOST 'localhost:9200/sessions/session/dh3sgudg8gsrgl/_update'-d '{"scripted_upsert":true,"script":{"id":"my_web_session_summariser","params":{"pageViewEvent":{"url":"foo.com/bar","response":404,"time":"2014-01-01 12:32"}}},"upsert":{}}'

doc_as_upsertedit

Instead of sending a partial doc plus an upsert doc, setting doc_as_upsert to true will use the contents of doc as the upsert value:

curl -XPOST 'localhost:9200/test/type1/1/_update'-d '{"doc":{"name":"new_name"},"doc_as_upsert":true}'https://www.elastic.co/guide/en/elasticsearch/reference/2.1/docs-update.html#docs-update

转载于:https://my.oschina.net/xiaominmin/blog/1597001

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 线程占用CPU过高定位分析

今天朋友问我一个Linux程序CPU占用涨停了&#xff0c;该如何分析&#xff0c; CPU占用过高&#xff0c;模拟CPU占用过高的情况 先上一段代码&#xff1a; 1 #include <iostream>2 #include <thread>3 #include <vector>4 5 6 int main(int argc, char **argv…

计算机二级常备知识,2020年计算机二级Office考试必备题库资料!

考试资料在手&#xff0c;考试不用愁&#xff01;领报名界面显示计算机二级Office通过率仅21.07%&#xff0c;很多人认为是既费脑子又费时间的考试&#xff0c;可能是方法不对&#xff0c;导致花了很多时间还是考不过&#xff0c;刚刚收到3月考的二级证书啦&#xff0c;马上还有…

MR作业的提交监控、输入输出控制及特性使用

2019独角兽企业重金招聘Python工程师标准>>> MR作业的提交监控、输入输出控制及特性使用 博客分类&#xff1a; hadoop 提交作业并监控 JobClient是用户作业与JobTracker交互的主要接口&#xff0c;它提供了提交作业&#xff0c;跟踪作业进度、访问任务报告及logs、…

http协议与web本质

当你在浏览器地址栏敲入“http://www.csdn.net/”&#xff0c;然后猛按回车&#xff0c;呈现在你面前的&#xff0c;将是csdn的首页了&#xff08;这真是废话&#xff0c;你会认为这是理所当然的&#xff09;。作为一个开发者&#xff0c;尤其是web开发人员&#xff0c;我想你有…

Docker storage driver 选择

2019独角兽企业重金招聘Python工程师标准>>> Docker storage driver 选择 博客分类&#xff1a; docker 本文的目的是说明&#xff0c;如何在生产环境中选择Docker 的storage driver。以及对应Linux发行版本下Docker storage driver的配置方法。主要参考&#xff0c…

手机网站制作html5,【怎么样制作手机网站】如何使用dreamweavercs6建立手机网站?织梦手机WAP浏览模块如何制作手机网站?如何制作html5手机页面?...

【怎么样制作手机网站】如何使用dreamweavercs6建立手机网站?织梦手机WAP浏览模块如何制作手机网站?如何制作html5手机页面?下面就和小编一起来看看吧!如何使用dreamweavercs6建立手机网站?制作步骤如下:1。打开DreamweaverCS6软件&#xff0c;可以在DreamweaverCS6软件的开…

如果在docker中部署tomcat,并且部署java应用程序

2019独角兽企业重金招聘Python工程师标准>>> 如果在docker中部署tomcat,并且部署java应用程序 博客分类&#xff1a; docker 1、先说如何在docker中部署tomcat 第一步&#xff1a;root用户登录在系统根目录下创建文件夹tomcat7,命令如&#xff1a;mkdir tomcat7&…

Spring Boot结合thymeleaf

之前在Eclipse里写了个Spring Boot响应jsp的小demo&#xff0c;后来发现打成jar包导出之后找不到jsp文件了。经过在网上查阅信息与资料&#xff0c;发现Spring Boot对于jsp的支持其实是不好的&#xff0c;而且在一些书中和官方都明确表示没有办法支持在jar包中打入jsp文件。虽然…

视觉测量简介

1.1 视觉测量技术 1.1.1 现代检测技术的发展趋势 检测技术是现代化工业的基础技术之一&#xff0c;是保证产品质量的关键。在现代化的大生产之中&#xff0c;涉及到各种各样的检测。随着工业制造技术和加工工艺的提高和改进&#xff0c;对检测手段、检测速度和精度提出了更…

高并发系统之降级特技

2019独角兽企业重金招聘Python工程师标准>>> 高并发系统之降级特技 博客分类&#xff1a; 架构 在开发高并发系统时有三把利器用来保护系统&#xff1a;缓存、降级和限流。之前已经有一些文章介绍过缓存和限流了。本文将详细聊聊降级。当访问量剧增、服务出现问题&a…

freeradius 3.0 时间限制_创意营销3.0新模式下,易企秀要成为中国的Adobe

近几年&#xff0c;随着大数据和人工智能技术的发展&#xff0c;智能化、程序化营销在国内获得高速发展。从以创意内容、提升效率的工具到现在驱动企业数字化转型的智能营销&#xff0c;营销云在国内的热度与成熟度不断提升。营销云起源于“Enterprise Marketing Software Suit…

抢占式和非抢占式的进程调度

非抢占式&#xff08;Nonpreemptive&#xff09; 让进程运行直到结束或阻塞的调度方式 容易实现 适合专用系统&#xff0c;不适合通用系统 抢占式&#xff08;Preemptive&#xff09; 允许将逻辑上可继续运行的在运行过程暂停的调度方式 可防止单一进程长时间独占…

图形学基础知识

本篇主要给大家介绍图形学基础知识&#xff0c;了解Unity图像渲染机制&#xff0c;以及图像渲染管线流程。 主要是因为伴随着VR/AR的飞速发展&#xff0c;为了满足VR高清高帧率的极限渲染&#xff0c;着色器编程&#xff08;Shader&#xff09;也成为了Unity程序开发人员的必备…

调度队列模型

调度队列模型及准则 1 仅有进程调度的调度队列模型&#xff1a; 每个进程在执行时都可能出现以下三种情况&#xff1a; (1) 任务在给定的时间片内已经完成&#xff0c;该进程便在释放处理机后进入完成状态 (2) 任务在本次分得的时间片内尚未完成&#xff0c;OS便将该任务再放入…

数据库相关整理

一、MySQL 1、mysql如何做分页 mysql数据库做分页用limit关键字&#xff0c;它后面跟两个参数startIndex和pageSize 2、mysql引擎有哪些&#xff0c;各自的特点是什么&#xff1f; http://www.cnblogs.com/ctztake/p/8453990.html 3、数据库怎么建立索引 create index account_…

api接口怎么对接_系统对接项目管理方面怎么做?从一次项目接口对接说起

故事&#xff1a;最近业务方有一个新的业务合作模式&#xff0c;需要与第三方公司进行系统的对接&#xff0c;原本预期2周可以完成的项目&#xff0c;最后要用到3周时间才能完成&#xff0c;出现的现象其实还挺典型的&#xff0c;也不是没遇到过&#xff0c;因为自己这边的进度…

周转时间 平均周转时间 带权周转时间 平均带权周转时间

1.周转时间 2.平均周转时间 平均周转时间是对n个而言的 3.带权周转时间 真正的运行时间指的是进程占有处理机的时间 4.平均带权周转时间 即n个平均的带权周转时间

unity应用开发实战案例_「简历」STAR法则的实战应用,附手把手教学案例

关注应届生求职网&#xff0c;了解更多求职信息本文共2072字&#xff0c;预计阅读需3分钟本期分享导师-Anna_青云导师51Job职场导师知乎职场千赞答主多年猎头及多行业人力资源管理经历职业生涯规划师、职业生涯咨询师、心理咨询师终身学习践行者、斜杠青年、职场教练在简历优化…