Elasticsearch script入门
创建脚本
GET _script/calculate-discount
删除脚本
DELETE _script/calculate-discount
引用脚本
Painless简介
Painless可以对文档字段进行加工处理
更新或者删除字段,处理数据聚合操作
Script Field:对返回的字段提前进行计算
Function Score:对文档的分数进行处理
在Reindex API,Update By Query时,对数据进行处理
脚本编写的语言,默认为painless。
脚本本身可以指定为内联脚本的source或存储脚本的id
应传递给脚本的任何命名参数
Painless关键字
if else while do for in continue break return new try catch throw this instanceof
通过Painless脚本访问字段
Update ctx._source.field_name
Search&Aggregation doc['field_name']
可以将表达式脚本用于script_score、script_fields、排序脚本和数字聚合脚本,只需将lang参数设置为expression。
script脚本修改文档
修改文档时,通过ctx._source.fieldname来指定某个字段
获取字段值方法
Doc_values是一个列式字段值存储,默认情况下在除text字段外所有字段上启用。
如果text类型,用doc['fieldname'].value会报错
当text类型包含keyword子字段时,用doc['fieldname.keyword'].value就可以
数字字段
日期字段
Geo_point字段
脚本中的多行语句
ES是支持多行脚本编写的:只需要source后面的语句的开头和结尾都是三个引号,再两对三引号之间写下多行内容即可,语句和语句直接使用“;”结尾,和java差不多
script_score
允许用户在检索中灵活修改文档score,来实现自己干预结果排名的目的,另外script score性能要高于function score
query:(必须,查询对象)用于返回文档的查询
script:(必须,脚本对象)用于计算query
查询的最终相关性script_score不能为负数。为了支持某些优搜索化,Lucene要求分数为正数或0
min_score:(可选,浮点数)得分低于此浮点数的文档将被排除在搜索结果之外
boost:(可选,浮点数)由产生的文档分数script乘以boost产生最终文档的分数。默认为1.0
在脚本中使用相关性分数:可以访问_score表示文档当前相关性分数的变量。
weight:允许您将分数乘以提供的weight,这有时可能是需要的,因为在特定查询上设置的提升至会被标准化,而对于这个评分函数却没有。数值的类型是浮点型
random:生成从0到1但不包括1均匀分布的random_score分数,默认情况下,它会使用内部Lucene文档ID作为随机源,这非常有效,但不幸的是不可重现,因为文档可能会通过合并重新编号。
field_value_factor:该功能允许您使用文档中的字段来影响分数。它类似于使用script_score函数,但是,他避免了编写脚本的开销。如果用于多值字段,则仅在计算中使用该字段的第一个值。
衰减函数:使用一个函数对文档进行评分,该函数根据文档的数字字段值与用户给定原点的距离而衰减。这类似于范围查询,但边缘平滑而不是框。
要对具有数字字段的查询使用距离评分,用户必须为每个字段定义一个origin和一个scale。origin需要定义计算距离的中心点,以及定义scale衰减率,衰减函数指定为
预定义函数
script_fields
您可以使用改script_fields参数来检索每个命中的脚本评估(基于不同的字段)。
脚本字段可以处理未存储的字段(price在上述情况下),并允许脚本字段还可以访问实际_source文档并使用params['_source']
__EOF__

本文链接:https://www.cnblogs.com/cxd424/p/15868183.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?