elasticsearch局部更新

elasticsearch局部更新

ID:8798949

大小:22.91 KB

页数:4页

时间:2018-04-08

elasticsearch局部更新_第1页
elasticsearch局部更新_第2页
elasticsearch局部更新_第3页
elasticsearch局部更新_第4页
资源描述:

《elasticsearch局部更新》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、就像在Updatingawholedocument中所说的一样,更新document的步骤就是检索——修改——插入整个document。然而使用update,就能局部更新,就像在一个请求里增加一个计数器一样。以前说过document是不可变的——不能被修改,只能被替换,update也必须遵守这个规则。在外部看来是局部更新的,在内部,update依然执行了检索——修改——重新插入这个流程。不同的是这个过程是发生在shard中,因此避免了多次网络请求的开销,通过减少检索和重新插入的时间,降低了来自于其他线程的访问导致的数据冲突的可能性。最简单的update格式就是请求体中接受部分

2、的document作为“doc"的参数。这个参数的值会和已经存在的document合并,已经存在的field将会被重写,新的field将会被添加,例如,增加一个tags字段和一个views字段到blog中:POST/website/blog/1/_update{  "doc":{   "tags":["testing"],   "views":0  }}如果成功将会相应如下数据:{  "_index": "website",  "_id":   "1",  "_type":  "blog",  "_version":3}检索这个document,注意一下_source字段:{

3、  "_index":  "website",  "_type":  "blog",  "_id":   "1",  "_version": 3,  "found":  true,  "_source":{   "title": "Myfirstblogentry",   "text": "Startingtogetthehangofthis...",   "tags":["testing"],   "views": 0  }}标注1和2表示就是局部更新的内容。 使用script进行局部更新。我们会在 Scripting–whenyouneedmore(TODO)更详细的介绍

4、script,但是现在来说我们已经足够了解script在ES中的几个合适的用武之地,已满足某些不被API直接支持的但是用户需要的动作。默认的script语言是MVEL,但是ES也是支持JavaScript,Groovy和Python的。MVEL是简单的,快速的,基于jiava的动态脚本语言,语法类似于JavaScript。你可以在 Elasticsearchscriptingdocs和MVELwebsite了解更过关于MVEL的内容。 script能用作updateAPI,用来修改_source的内容,这被称为一个更新的脚本ctx._source。例如,可以使用script增

5、加这个views的数目:POST/website/blog/1/_update{  "script":"ctx._source.views+=1"}我们也能使用script给tags数组增加一个元素,在这个例子中我们指定新的tag作为参数而不是在scritp中硬编码。这个方式允许ES在以后可以重用这个参数,并且不需要每次从新编译这个script:POST/website/blog/1/_update{  "script":"ctx._source.tags+=new_tag",  "params":{   "new_tag":"search"  }}最后两个的请求相应如下:{

6、  "_index":  "website",  "_type":  "blog",  "_id":   "1",  "_version": 5,  "found":  true,  "_source":{   "title": "Myfirstblogentry",   "text": "Startingtogetthehangofthis...",   "tags": ["testing","search"],   "views": 1  }}标记1表示search这个元素已经追加到tags的数组中。标记2表示views的数量已经增加了。 通过设置ctx.op为delet

7、e,我们甚至能通过script删除一个document。POST/website/blog/1/_update{  "script":"ctx.op=ctx._source.views==count?'delete':'none'",  "params":{    "count":1  }}注:以上执行在curl下失败,在head中成功。 更新一个或许不存在的document如果我们需要在ES中存储一个页面访问量的计数器conter,每次用户访问这个页面,我们都对这个页面增加一个数,但是增加这个coun

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。