ES-脚本

news2024/11/17 16:31:45

脚本

简单使用
POST product/_update/2
{
  "script": {
    "source": "ctx._source.salary+=1" #将薪水字段的值 + 1
  }
}

在这里插入图片描述
预定义变量

POST product/_update/2
{
  "script": {
    "lang": "painless",
    "source": "ctx._source.salary+=params.num",
    "params": {
      "num": 1
    }
  }
}

多行代码
下面脚本的意思是有这条数据就先 + num 然后乘scale,没有就插入这条数据。

POST product/_update/2
{
  "script": {
    "lang": "painless",
    "source": 
    """ #写在"""中多行代码
    ctx._source.salary+=params.num;
    ctx._source.salary*=params.scale;
    """,
    "params": {
      "num": 1,
      "scale" : 2
    }
  },
  "upsert": {
    "name": "xiaomi nfc phone2",
    "type": "c",
    "price": 2999,
    "date": "2023-05-01",
    "desc": "xiaomi 2023 new1",
    "tags": [
      "88vip",
      "tmall",
      "newer"
    ]
  }
}
动态字段
GET /product/_search
{
  "script_fields": {
    "or_price": {
      "script": {
        "source": "doc['salary'].value"
      }
    },
    "disc_price" : {
      "script" : {
        "source": "[doc['salary'].value * 0.9,doc['salary'].value * 0.8]"
      }
    }
  }
}

在这里插入图片描述

函数

定义一个全局函数,别人也可以使用。
全局函数里面不允许对文档直接进行赋值, “source”: “doc.salary.value += params.num” 这个+=就不行。

#定义函数
POST _scripts/myFun
{
  "script": {
    "lang": "painless",
    "source": "[doc['salary'].value * 0.9,doc['salary'].value * 0.8]"
  }
}
#使用函数
GET /product/_search
{
  "script_fields": {
    "disc_price" : {
      "script" : {
        "id" : "myFun"
      }
    }
  }
}

在这里插入图片描述
带参数的引用

POST _scripts/calc_x
{
  "script": {
    "lang": "painless",
    "source": "doc.salary.value + params.num"
  }
}
GET /product/_search
{
  "script_fields": {
    "disc_price" : {
      "script" : {
        "id" : "calc_x",
        "params": {
          "num" : 10,
          "scale" : 10
        }
      }
    }
  }
}

在这里插入图片描述

更多用法
POST /product/_update/2
{
  "script": {
    "lang": "painless", 
    "source": 
    """
       ctx._source.tags.add("abc");
       """
  }
}

在这里插入图片描述
for

POST /product/_update/2
{
  "script": {
    "lang": "painless", 
    "source": 
    """
    for (int i = 0; i < 3; i ++)
       ctx._source.tags.add("abc" + i);
       """
  }
}

在这里插入图片描述

if

POST /product/_update/3
{
  "script": {
    "lang": "painless",
    "source": """
    if (ctx._source.name ==~ /liyong.*/) {
      ctx._source.salary += 1000;
    } else {
       #不可以省略
       ctx.op = "noop";
    }
     """
  }
}

综合使用

先筛选出salary >1801000的数据,然后再聚合中使用脚本进行聚合

get product/_search
{
  "query": {
    "constant_score": {
      "filter": {
        "range": {
          "salary": {
            "gt": 1801000
          }
        }
      }
    }
  },
  "aggs": {
    "tag_agg": {
      "sum": {
        "script": {
          "source": "doc['tags.keyword'].length"
        }
      }
    }
  }
}

在这里插入图片描述

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

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

相关文章

办公技巧:分享五个在线画图工具,值得收藏

目录 1. processon ​编辑 2. visual paradigm online 3. zen flowchart 4. draw io 5. Excalidraw 今天小编给大家分享五个在线画图工具&#xff0c;感兴趣的可以下载试一试&#xff01; 1. processon 说流程图除了必提http://draw.io&#xff0c;processon也必须要有…

【深度学习】机器学习概述(一)机器学习三要素——模型、学习准则、优化算法

​ 文章目录 一、基本概念二、机器学习的三要素1. 模型a. 线性模型b. 非线性模型 2. 学习准则a. 损失函数1. 0-1损失函数2. 平方损失函数&#xff08;回归问题&#xff09;3. 交叉熵损失函数&#xff08;Cross-Entropy Loss&#xff09;4. Hinge 损失函数 b. 风险最小化准则1.…

如何在 Windows 10/11 上恢复已删除的 Word 文档

意外删除重要的 Word 文档可能会令人心碎。当文件恰好非常重要时尤其如此。关键数据的丢失可能会导致沮丧和恐慌&#xff0c;因为数小时的辛勤工作和有价值的信息似乎消失得无影无踪。然而&#xff0c;在您屈服于绝望之前&#xff0c;有个好消息。 有多种技术和工具可帮助您恢…

【AI美图】第04期效果图,AI人工智能无绘画,精选五组特写版美图欣赏

标题好看的照片让AI实现 也许你不相信吧&#xff0c;这么秀的照片居然全部是电脑合成AI妙手&#xff0c;一键打造&#xff0c;速度之快&#xff0c;效果之好&#xff0c;任谁都不愿意相信&#xff0c;然后在今天这一切都是现实的&#xff0c;现在让我们从照片的拍摄谈谈什么样的…

准备迎接超级人工智能系统,OpenAI宣布RLHF即将终结!超级对齐技术将接任RLHF,保证超级人工智能系统遵循人类的意志

本文原文来自DataLearnerAI&#xff1a; 准备迎接超级人工智能系统&#xff0c;OpenAI宣布RLHF即将终结&#xff01;超级对齐技术将接任RLHF&#xff0c;保证超级人工智能系统遵循人类的意志 | 数据学习者官方网站(Datalearner)https://www.datalearner.com/blog/105170265526…

RocketMQ —消费重试

消费者出现异常&#xff0c;消费某条消息失败时&#xff0c; Apache RocketMQ 会根据消费重试策略重新投递该消息进行故障恢复。本文介绍消费重试机制的原理、版本兼容性和使用建议。 一、应用场景​ Apache RocketMQ 的消费重试主要解决的是业务处理逻辑失败导致的消费完整性…

EasyExcel读取Excel数据(含多种方式)

目录 EasyExcel简介 使用EasyExcel进行读数据 引入依赖&#xff1a; EasyExcel提供了两种读取模式 使用 监听器 读取模式 1.创建一个实体类 2.创建监听器 代码 使用 同步读 读取模式 1.创建一个实体类 2.代码 添加导入数据库的逻辑 其实官方文档讲得很清楚&#xff…

git 的使用

git reset详解-CSDN博客 git reset 命令详解 git revert命令详解。-CSDN博客 关于Git分支中HEAD和Master的理解 - 知乎 (zhihu.com) 一文带你精通 Git&#xff08;Git 安装与使用、Git 命令精讲、项目的推送与克隆&#xff09;-CSDN博客 Git 常用操作&#xff08;5&#xff…

【Linux】tree命令使用

tree命令 tree命令用于以树状图列出目录的内容。 语法 tree [参数] [目录] tree 命令 -Linux手册页 bash: tree: 未找到命令... 安装tree yum -y install tree如果你系统中有安装tree 但是还是执行找不到该命令的话&#xff0c;那原因就是&#xff1a;环境变量错误&#x…

智能优化算法应用:基于热交换算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于热交换算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于热交换算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.热交换算法4.实验参数设定5.算法结果6.参考文…

【数字电路】MacBook使用iverilog进行数字电路仿真

安装流程 在终端中用brew包管理工具进行安装仿真工具&#xff1a; 编译verilog代码&#xff1a; brew install icarus-verilog编译verilog代码&#xff1a; brew install verilatorMacOS系统显示UNIX GUI brew install xquartz可视化仿真波形图&#xff1a; brew install gtk…

2024年天津体育学院专升本专业课网上报名确认缴费安排

天津体育学院2024年高职升本科专业考试报名安排 一、时间安排 1.报名时间&#xff1a;2023年12月19日9&#xff1a;00-12月21日17&#xff1a;00 2.缴费时间&#xff1a;2023年12月26日-27日 &#xff08;考试考务费&#xff1a;体育教育专业&#xff1a;160元/人&#xff…

项目中使用Arrays.asList、ArrayList.subList的坑

使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用&#xff1a; List<Integer> statusList Arrays.asList(1, 2); System.out.println(statusList); System.out.println(statusList.contains(1)); System.out.println(statusList.contains(3)…

C之switch小问题

执行结果&#xff1a; 为什么会是100呢&#xff1f; 因为C语言会忽视 switch语句与第一个case之间的code&#xff0c;也就是根本不会执行 “num100;

el-date-picker 选择一个或多个日期

el-date-picker可选择多个日期 type“dates” 加个s即可 <div><span>el-date-picker选择多个日期</span><el-date-pickertype"dates"v-model"dateList"placeholder"选择一个或多个日期"></el-date-picker></di…

RabbitMQ插件详解:rabbitmq_message_timestamp【Rabbitmq 五】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 RabbitMQ时空之旅&#xff1a;rabbitmq_message_timestamp的奇妙世界 前言什么是rabbitmq_message_timestamprabbitmq_message_timestamp 的定义与作用&#xff1a;如何在 RabbitMQ 中启用消息时间戳&…

聚观早报 |红魔9 Pro氘锋透明银翼版开售;荣耀90 GT将发布

【聚观365】12月16日消息 红魔9 Pro氘锋透明银翼版开售 荣耀90 GT将发布 德国成功化解预算僵局 第二届起点读书“网文填坑节”收官 阿维塔科技拟 2025 年赴港上市 红魔9 Pro氘锋透明银翼版开售 现在有最新消息&#xff0c;近日红魔9 Pro氘锋透明银翼版本开启全款预售&…

Java实现插入排序及其动图演示

插入排序是一种简单直观的排序算法。它的基本思想是将一个待排序的元素插入到已经排序好的序列中的适当位置&#xff0c;从而得到一个新的、元素个数加一的有序序列。 具体的插入排序算法过程如下&#xff1a; 从第一个元素开始&#xff0c;认为第一个元素已经是有序序列。取…

C/C++ STL提供的序列式容器之deque

deque是双向开口的连续内存空间&#xff08;动态将多个连续空间通过指针数组接合在一起&#xff09;&#xff0c;随时可以增加一段新的空间。 deque 的最大任务就是在这些分段的连续空间上&#xff0c;维护其整体连续的假象&#xff0c;并提供随机存取的接口。 特点 1. 一…

风速预测(五)基于Pytorch的EMD-CNN-LSTM模型

目录 前言 1 风速数据EMD分解与可视化 1.1 导入数据 1.2 EMD分解 2 数据集制作与预处理 2.1 先划分数据集&#xff0c;按照8&#xff1a;2划分训练集和测试集 2.2 设置滑动窗口大小为96&#xff0c;制作数据集 3 基于Pytorch的EMD-CNN-LSTM模型预测 3.1 数据加载&…