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
英文地址,請注明出處:http://en.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;用…