Elasticsearch scripting

Elasticsearch提供的增删改查相关API虽然能解决大部分业务场景的问题,但是在一些相对复杂的业务场景,使用增删改查不太好实现的时候,此时就需要借助Elasticsearch脚本进行实现,Elasticsearch脚本可以使用编程语言的方式,帮助我们解决复杂业务问题

Scripting 使用语法:

"script": {
    "lang":   "...",  // 指定编写脚本的语言,默认为painless。
    "source" | "id": "...", // 指定脚本的来源,inline脚本是指定source,存储的脚本是指定的id,并从集群状态中检索
    "params": { ... } // 传递给脚本使用的变量参数。使用参数而不是硬编码值来减少编译时间。
  }

image-20220709105558632

image-20220709091249159

image-20220709091315866

image-20220709091437813

![image-20220709091630529](/Users/kongpingfan/Library/Application Support/typora-user-images/image-20220709091630529.png)

Upsert:

image-20220709091815495

使用Elasticsearch脚本有两点需要注意的:

  • 1、性能问题

官方文档性能优化中明确指出使用脚本会导致性能低;

  • 2、使用场景相对少

非复杂业务场景下,基础的增、删、改、查基本上就能搞定。

update query

image-20220709101404914

批量更新数据:

image-20220709180031880