elasticsearch sort script实现字段值等于某值排名靠前

2023-11-15

什么是script语言
script语言是es提供的一种支持自定义编程的用于复杂查询的脚本语言,主要类型有painless、expressions等。

需求描述
实际业务场景需要将某字段等于某值的排在前面,其他数据靠后。
比如:
雇员属性:name-名称,price-价值
价值 == 100的雇员排名在前,其他数据按照价值倒序排名。

技术简介
根据需求我们可以用es的script语法,在script里面进行表达式解析,最后进行排序。

案例实战
为保证测试用例以及es语法可见,我们用kibana进行脚本演示

1、创建雇员索引

PUT employ
PUT employ/_mapping
{
  "properties":{
    "name":{
      "type":"keyword"
    },
    "price":{
      "type":"long"
    }
  }
}

在这里插入图片描述

2、新增雇员测试数据

#雇员数据
PUT employ/_doc/1
{
  "name":"zhangsan",
  "price":123
}

PUT employ/_doc/2
{
  "name":"lisi",
  "price":315
}

PUT employ/_doc/3
{
  "name":"wangwu",
  "price":100
}

3、查询测试数据

GET employ/_search
{
  
}

在这里插入图片描述

4、运用es sort script语法进行查询
表达式:价值 == 100 的数据排在最前面,然后根据价值倒序进行其他数据排序。

#价值为100的排在前面,后面的按照价值倒序
#如果表达式比较时间则需要转化 .value.toInstant().toEpochMilli()
#如果表达式比较字符也需要转换 .value.toString()
#也就是说表达式两端的类型要一致,如果比较long型数据最好用字符串进行比较
GET employ/_search
{
  "query": {
    "bool": {
      
    }
  },
  "sort": [
    {
      "_script":{
        "script":{
          "source": "doc['price'].value == 100 ? 1 : 0"
        },
        "type":"number",
        "order": "desc"
      }
    },{
      "price":{
        "order": "desc"
      }
    }
  ]
}

5、测试结果:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

elasticsearch sort script实现字段值等于某值排名靠前 的相关文章

随机推荐

  • Serverless Kubernetes 应用部署及扩缩容

    作者 邓青琳 轻零 阿里云技术专家 导读 本文分为三个部分 首先给大家演示 Serverless Kubernetes 集群的创建和业务应用的部署 其次介绍 Serverless Kubernetes 的常用功能 最后对应用扩缩容的操作进行
  • 医学图像分割研究思路

    医学图像分割的主流方法之一是基于水平集 Level Set 的分割方法 目前针对主流的分割方法 我们主体研究思路如下图 在模型凸化以及形状先验两个方面 未开展相关工作 参考文献 部分演示代码 参数随图像需要调整 7 Xiaomeng Xin
  • 重新生成一堆rpm目录的repo库步骤

    createrepo c repo2module s stable modules yaml modifyrepo c mdtype modules modules yaml repodata
  • IntelliJ IDEA插件搜索下载缓慢

    我用的版本是2019 2 1 搜索插件特别慢 有时候加载不出来 看到别人说是用 Setting Appearance Behavior Syetem Setting Updates 将Use secure connection 的勾选去掉
  • java----面向对象和面向过程

    1 面向对象思想 面向对象四星思想就是把关注点放在一件事或一个活动中设计的人或事物上的思想 2 面向过程思想 面向过程思想就是把关注点放在一件事或一个活动中设计的人或事物所涉及的步骤上的思想 3 面向过程关键字 步骤 过程 4 面向对象关键
  • 一周 8k Star 的 Notion 开源替代品 AppFlowy 诞生

    近日 Notion 的开源替代品 AppFlowy 正式发布了 一经发布 在短短一周就获得了近 8k Star 这个成绩对于一个开源项目来说是非常不错的 那么为什么有了 Notion AppFlowy 团队却要从头开始开发一个类似的产品呢
  • 框架--SpringWeb

    文章目录 一 springweb 1 概述 2 springWeb层搭建 3 请求中的地址如何定义 4 如何接收请求中的数据 5 直接使用对象接收 6 post请求中文乱码处理 7 Ajax 返回 JSON 8 跨域问题 9 拦截器 10
  • string头文件常用方法(C++)

    string 定义字符串 如果未赋初值 则默认是 即空字符串 结尾也没有结束标志 0 include
  • 排序算法-希尔排序

    属性 1 希尔排序是对直接插入排序的优化 2 当gap gt 1时都是预排序 目的是让数组更接近于有序 当gap 1时 数组已经接近有序的了 这样就会很 快 这样整体而言 可以达到优化的效果 我们实现后可以进行性能测试的对比 3 希尔排序的
  • C++ 异常处理 入门

    C 异常处理 入门 异常 程序执行期间 可检测到的不正常情况 例如 0作除数 数组下标越界 打开不存在的文件 远程机器连接超时 malloc失败等等 程序的两种状态 正常状态和异常状态 发生不正常情况后 进入异常状态 从当前函数开始 按调用
  • Flex和Bison协同工作(下)

    Flex和Bison协同工作 下 上一篇文章我们写了一个稍微复杂一点点的词法解析器 这篇我们开始搞定语法分析器 文法与语法分析 语法分析器的任务其实就是找出输入记号之间的关系 通常使用语法分析树 parse tree 例如 算术表达式12
  • [4G&5G专题-62]:架构 - 开放的网络自动化平台ONAP(Open Network Automation Platform)

    目录 第1章 什么是开放的网络自动化平台ONAP 1 1 什么是ONAP 1 2 什么是的网络自动化平台 1 3 ONAP的动机与背景 1 4 ONAP的底层支撑技术 1 5 ONAP的前世 1 6 5G与ONAP 第2章 5G RAN的自
  • 你真的会用read()读【普通文件】吗?

    原型如下 include
  • 如何将json字符串写入table表格中

    JSON JavaScript Object Notation 是一种轻量级的数据交换格式 可以方便的将后台复杂的数据带回到前台进行展示 那么如何把json字符串写入到table表格之中呢 json简单说就是javascript中的对象和数
  • 美通企业日报

    今日看点 2019时尚育儿
  • java 常见错误合集

    java lang NullPointerException 这个异常都是因为调用null对象的方法 就是一个对象还没有没有正常初始化 就先调用它的方法比如 Object obj null obj toString 这就会抛出 这个异常
  • java中strictfp么意思_java中的strictfp的作用

    自Java2以来 Java语言增加了一个关键字strictfp 虽然这个关键字在大多数场合比较少用 但是还是有必要了解一下 strictfp 的意思是FP strict 也就是说精确浮点的意思 在Java虚拟机进行浮点运算时 如果没有指定s
  • 基于STM32控制的数字BUCK电路及程序编写

    本文芯片采用STM32G474CBT6 采用STM32cubeMX进行程序生成 BUCK电路拓扑结构 如图所示 BUCK变换器主要由电源VDC 场效应管MOSFET 续流二极管VD 电感L以及滤波电容C和负载RES组成 当MOSFET开通时
  • linux pxe安装视频,Linux利用PXE安装虚拟机的方法

    之前和友人聊天 知道可以利用PXE安装虚拟机 相信很多用户都和小编一样还不是很清楚 在这小编就把学习到的方法分享给大家 方法如下 1 1 dnsmasq apt get install dnsmasq vim etc dnsmasq con
  • elasticsearch sort script实现字段值等于某值排名靠前

    什么是script语言 script语言是es提供的一种支持自定义编程的用于复杂查询的脚本语言 主要类型有painless expressions等 需求描述 实际业务场景需要将某字段等于某值的排在前面 其他数据靠后 比如 雇员属性 nam