ES有内置的Groovy脚本执行内核,可以在命令的Json内嵌入Groovy脚本语句
 
  1. 前提数据:
              
 
  1. 让 num 加 10.
POST /test_index/test_type/1/_update
{
    "script":"ctx._source.num+=10"
}
 
  1. 把Groovy脚本(含参数)保存在文件中,在sense中给参数赋值,并执行
保存目录: es根目录 / config / scripts, 创建 set_num.groovy
 
内容为:把num字段设置为参数传入的值,其中 param_num是脚本的参数,需要在命令中传入:
 
在sense中,执行:
POST /test_index/test_type/1/_update
{
    "script":{
        "lang":"groovy",
        "file":"set_num",
        "params":{
            "param_num":181
        }    
    }
}
 
 
  1. 用脚本做些其他事情:改变执行的命令
脚本内容:当传入参数为true时,就执行delete操作;为false时,不做任何操作
ctx.op = param_isdelete == true ? "delete" : "none"
在sense中执行:
POST /test_index/test_type/1/_update
{
    "script":{
        "lang":"groovy",
        "file":"change_op_type",
        "params":{
            "param_isdelete":true
        }    
    }
}
 
    1. ES内置的upsert命令,确保脚本安全的执行(当要更新的文档不存在时)。
适用场景:假设我们需要 在 Elasticsearch 中存储一个页面访问量计数器。 每当有用户浏览网页,我们对该页面的计数器进行累加。但是,如果它是一个新网页,我们不能确定计数器已经存在。 如果我们尝试更新一个不存在的文档,那么更新操作将会失败。
如下:如果指定的文档不存在,那么当执行脚本的时候,会报错
可以使用 upsert命令。
当文档不存在,则执行upsert,对文档进行初始化,注意,初始化后不再执行script
当文档存在,则执行script
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

4: ES内执行Groovy脚本,做文档部分更新、执行判断改变操作类型的更多相关文章

  1. Java执行groovy脚本的两种方式

    记录Java执行groovy脚本的两种方式,简单粗暴: 一种是通过脚本引擎ScriptEngine提供的eval(String)方法执行脚本内容:一种是执行groovy脚本: 二者都通过Invocab ...

  2. 使用 Java 执行 groovy 脚本或方法

    1. 引入依赖 <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groo ...

  3. es之对文档进行更新操作

    5.7.1:更新整个文档 ES中并不存在所谓的更新操作,而是用新文档替换旧文档: 在内部,Elasticsearch已经标记旧文档为删除并添加了一个完整的新文档并建立索引.旧版本文档不会立即消失 ,但 ...

  4. r0capture安卓应用层通杀脚本-使用文档

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! r0capture安卓应用层通杀脚本-使 ...

  5. GIT+云盘作 做 文档管理工具

    GIT+云盘作 做 文档管理工具 在工作中, 会遇到公司的文档 和 自己家里的 文档进行同步的问题, 通常我们使用U盘作为传输节制, 但是不是非常好,文档的改动都不能发现, 导致回家同步的时候, 出各 ...

  6. 为什么不使用github的wiki而是使用mkdocs做文档管理?

    为什么不使用github的wiki而是使用mkdocs做文档管理? 目前 KSFramework 是使用mkdocs来做在线文档 而非使用github的wiki,这是为什么呢? 在windows下搭建 ...

  7. 使用Docsify做文档网站的详细配置教程

    使用Docsify做文档网站的详细配置教程 作者:xhemj 没错,它叫Docsify. xhemj的文档中心就是用这个写的 开源地址:https://github.com/docsifyjs/doc ...

  8. 基于Metronic的Bootstrap开发框架经验总结(17)-- 使用 summernote插件实现HTML文档的编辑和图片插入操作

    在很多场合,我们需要在线编辑HTML内容,然后在页面上或者其他终端上(如小程序.APP应用等)显示,编辑HTML内容的插件有很多,本篇介绍基于Bootstrap的 summernote插件实现HTML ...

  9. 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)

    为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ...

随机推荐

  1. maven 私服上有jar包但是却下载不下来

    解决办法: 在parent中执行deploy命令就解决了. 原因:第一次建项目,上传jar包的时候直接进入到该项目中进行deploy到私服.最终发现私服仓库有,但是别人引用的时候无法下载.是因为别人下 ...

  2. Spark2.x(五十九):yarn-cluster模式提交Spark任务,如何关闭client进程?

    问题: 最近现场反馈采用yarn-cluster方式提交spark application后,在提交节点机上依然会存在一个yarn的client进程不关闭,又由于spark application都是 ...

  3. python练习:寒冰猴子狐狸,猫狗咬架

    python练习:寒冰猴子狐狸,猫狗咬架 一,寒冰猴子狐狸 class Person: def __init__(self, na, gen, age, fig): self.name = na se ...

  4. Buffon投针问题

  5. Docker 安装 MySQL 并实现远程连接

    获取 MySQL 镜像 docker pull mysql:5.6 查看镜像列表 docker images 启动 MySQL 镜像 docker run -itd -P mysql:5.6 bash ...

  6. postman做接口测试 application/x-www-form-urlencoded 格式与json格式互转

    背景:用postman做接口测试可以使用application/x-www-form-urlencoded请求,也可以使用json请求,接口文档如下: 请求参数 字段 类型 是否必填 注释 websi ...

  7. Spring MVC -- Spring MVC入门

    本篇博客首先介绍Spring MVC的优点,然后介绍Spring MVC的基本组件,包括DispatcherServlet,并学习如何开发一个“传统风格”的控制器,这是在Spring 2.5版本之前开 ...

  8. js set集合转数组 Array.from的使用方法

    1.set集合转化Array数组  注意:这个可以使用过滤数组中的重复的元素 你可以先把数组转化为set集合 然后在把这个集合通过Array.from这个方法把集合在转化为数组 var set = n ...

  9. 百练1724 ROADS

    总时间限制: 1000ms    内存限制: 65536kB 描述 N cities named with numbers 1 ... N are connected with one-way roa ...

  10. php xml转array的方法

    php xml转array的方法 <pre><?php $responseXml='<xml><appid>12</appid></xml& ...