Elasticsearch 自定义排序:使用 Painless 脚本实现复杂排序逻辑

需求背景:

从es查询数据出来的时候,要求type为CATALOG的数据排在最前面,也就是目录类型的要放在最前面,而且要求按照层级排序,从L1到L5顺序排序

直接上解法:

{//查询条件"query": {"bool": {//必须满足"must": [{"term": {"status": "PUBLISHED"}},{"bool": {//多条件满足一个即可"should": {"terms": {"subAssetsType": ["CATALOG","TABLE","VIEW","DATA_OBJECT","REPORT","FILE"]}}}}]}},//返回的条数"size":200,//排序条件"sort": [{"_script": {"type": "number","script": {"lang": "painless",//这里主要就是把目标的分数set为大值,这里不支持split方法和charAt方法也不支持,可以用contains和indexOf方法"source": "int catalogPriority = doc['subAssetsType'].value == 'CATALOG' ? 1 : 0; int slashCount = 0; if (catalogPriority == 1 && doc.containsKey('catalogPath')) { String catalogPathValue = doc['catalogPath'].value; if (catalogPathValue != null && !catalogPathValue.isEmpty()) { for (int i = 0; i < catalogPathValue.length(); i++) {if (catalogPathValue.substring(i, i + 1).contains('/')) {slashCount++;}} }  } return catalogPriority * 1000 - slashCount;"},//在这里进行倒叙,这样目标数据就排到前面了"order": "desc"}},{"_score":"DESC"}],//聚合条件"aggs": {"subs": {"terms": {//聚合的字段,类似group by subAssetsType"field": "subAssetsType","order": { // 排序方式"_count": "asc" // 按照计数降序排列},"size": 100}}}
}

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

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

相关文章

华为云Flexus+DeepSeek征文|华为云数字人 + DeepSeek:智能交互的革命性突破

目录 前言 关于华为云数字人和云服务 1、华为云数字人 &#xff08;1&#xff09;MetaStudio介绍 &#xff08;2&#xff09;应用场景 &#xff08;3&#xff09;功能特性 &#xff08;4&#xff09;使用体验 2、华为云云服务 华为云数字人结合DeepSeek的核心流程 1、…

【GESP】C++四级练习 luogu-P5729 【深基5.例7】工艺品制作

GESP C四级练习&#xff0c;二维/多维数组练习&#xff0c;难度★★☆☆☆。 题目题解详见&#xff1a;【GESP】C四级练习 luogu-P5729 【深基5.例7】工艺品制作 | OneCoder 【GESP】C四级练习 luogu-P5729 【深基5.例7】工艺品制作 | OneCoderGESP C四级练习&#xff0c;二维…

通过npm install -g yarn安装Yarn显示Proxy代理相关问题如何解决?

手动下载yarn.msi安装包或者yarn.js文件 参考&#xff1a;windows 怎么下载yarn安装包并将下载的yarn文件移动到全局目录并添加执行权限&#xff1f;-CSDN博客

arm交叉编译qt应用中含opengl问题解决

问题是采用正点原子方案中&#xff0c;用虚拟机交叉编译含opengl的qt程序会出现编译失败问题&#xff0c;因为正点原子中的交叉编译qt源码时没有编opengl。 野火似乎有解决&#xff1a; https://doc.embedfire.com/linux/rk356x/Qt/zh/latest/lubancat_qt/install/install_arm…

服务器排查与加固服务详细介绍

一、服务概述 服务器排查与加固服务是针对企业核心信息资产&#xff08;服务器&#xff09;的全方位安全保障方案&#xff0c;旨在通过系统性排查潜在风险、修复漏洞、优化配置&#xff0c;提升服务器抗攻击能力&#xff0c;确保业务连续性和数据安全性。该服务覆盖硬件、操作…

提升开发思维的设计模式(下)

上期回顾 提升开发思维的设计模式&#xff08;上&#xff09; 2. 设计模式分类&#xff08;23种设计模式&#xff09; 2.13 组合模式&#xff08;Composite Pattern&#xff09; 将对象组合成树形结构&#xff0c;以表示“整体-部分”的层次结构。 通过对象的多态表现&#…

h5学习笔记:前端打包

这2天做了一个实验。在非module传统的网页&#xff0c;要实现改名和避免缓存。原本这个事情早在几年前就做过借助gulp的方式或者fis3 的工具来完成。然而随着nodejs 来到了24版本后&#xff0c;似乎nodejs的版本这事情就变动复杂多变了。 为什么那么麻烦&#xff1f;实际上开发…

14.OCR字符识别

目录 1. 识别方法 1. OCR识别 2. OCR识别方法1-助手识别 3. OCR识别方法2-算子分割识别 4.文本分割识别 2. 文本分割 1. 借用助手设置参数文本分割+混合识别 2. 借用助手设置参数文本分割场景2 3.不同字符场景 1.倾斜字符 1. 识别方法 1. OCR识别 *OCR *1. 概念 * …

如果将Word里每页的行数设置成50行

https://www.zhihu.com/question/357856175 本文来自知乎林听晴 第一步&#xff1a;新建一个Word文档 打开“页面布局”&#xff0c;之后点击图片圈起来的小图标&#xff0c;即可出现“页面设置”页面。 ​ ​ 路径&#xff1a;页面设置—文档网络&#xff0c;可以看到默认行…

WebRTC(十一):RTCP和SRTCP

RTCP 基本概念 RTCP 是 RTP 的控制协议&#xff0c;用于监控媒体传输质量和参与者状态&#xff0c;并与 RTP 一起工作。RTP 用于传输媒体数据&#xff08;如音视频&#xff09;&#xff0c;RTCP 则用于传输控制信息。 RTCP 通常和 RTP 同时使用&#xff0c;并通过 不同端口&…

将element-plus table背景改成透明色

方法一:全局修改(推荐) /* 全局透明表格样式 */ .el-table, .el-table__header-wrapper, .el-table__body-wrapper, .el-table__row {background-color: transparent !important; }/* 可选:自定义表头和斑马纹行的透明度 */ .el-table__header th {background-color: rgba(…

安全运营中的漏洞管理和相关KPI

漏洞管理一直是企业网络安全运维中的关键环节,但又是安全运维的痛点。不仅要投入大量的人力物力,还无法被其他运维团队所理解。那么,向领导层和相关团队反映出当前漏洞管理的现状和挑战便是一个急需解决的问题。 通过有效的数据讲好故事,发现问题,或许是做好漏洞管理的突破…

机器学习框架(1)

以吴恩达的《机器学习》课程为蓝本&#xff0c;整理课程框架&#xff0c;自己学习的简单记录。 课程讲解很清楚&#xff0c;建议有空可以看看原课程。 01 单变量线性回归 回归偏向于连续属性&#xff0c;分类偏向于离散属性。 监督学习是给定标签的学习&#xff1b;而无监督学…

AI Ready数据库,OceanBase打了一个样

大数据产业创新服务媒体 ——聚焦数据 改变商业 过去一年&#xff0c;企业对AI的兴趣不减。从接入大模型&#xff0c;到部署RAG&#xff08;检索增强生成&#xff09;系统、探索AI Agent&#xff0c;AI从“新技术”变成了“业务工具”的候选项。但一个技术能否真正落地&#x…

趣味数据结构之——链

记得数组吗&#xff0c;一个萝卜一个坑的想象。在数组的世界里我们就是第三视角&#xff0c;置身于坑外的。如果我们是二维平面上的生物&#xff0c;那数组就是一维的线&#xff0c;我们可以随机访问&#xff0c;增删查改&#xff0c;也可以一眼看出数组大小。 那么对于链来说…

构建低代码平台的技术解析

低代码平台表单引擎与业务事件设计实践 低代码平台表单引擎与业务事件设计实践一、什么是低代码&#xff1f;它能做什么&#xff1f;二、请假系统案例介绍2.1 主要功能2.2 业务流程 三、表单元数据、实例数据与业务事件联动设计3.1 表单元数据&#xff08;Meta&#xff09;如何…

Hive SQL 快速入门指南

在大数据蓬勃发展的当下&#xff0c;处理海量数据成为企业面临的关键挑战。Hive SQL 作为一款强大的工具&#xff0c;为我们打开了高效处理大数据的大门。接下来&#xff0c;让我们一起踏上 Hive SQL 的入门之旅。​ 一、Hive SQL 是什么​ Hive 是基于 Hadoop 的数据仓库工具…

国内公司把数据湖做成了数据库

在做多年的数据仓库项目&#xff0c;数据湖也在做&#xff0c;但是做完发现&#xff0c;这个不是传统数据库里面的ODS吗&#xff1f; 好多公司做数据湖&#xff0c;就是把数据湖做成了ODS层&#xff08;贴源数据层&#xff09;&#xff0c;难道真的数据湖就是这样等于ODS吗&am…

Python 数据分析与可视化 Day 6 - 可视化整合报告实战

&#x1f3af; 今日目标 整合数据分析与可视化结果生成结构化报告用代码自动生成完整的图文分析文档熟悉 Jupyter Notebook / Markdown 图表 报告生成流程 &#x1f9e9; 一、项目背景&#xff1a;学生成绩分析报告 数据来源&#xff1a;students_cleaned.csv&#xff08;含姓…

服务器、树莓派/香橙派部署HomeAssistant与小爱音箱联动

HomeAssistant功能介绍与多平台部署实战&#xff1a;CentOS服务器、树莓派、香橙派部署及小爱音箱联动控制 一、HomeAssistant简介 HomeAssistant是一款基于Python开发的开源智能家居自动化平台&#xff0c;它最大的特点是高度集成和自定义。通过HomeAssistant&#xff0c;用…