Elasticsearch的Groovy Script自定義評分檢索

需求:以索引中的boostapp列作為評分的基礎分值,同時根據carpublishtime(數據的刷新時間字段)按時間進行衰減。

基于Groovy腳本實現。

?

1、query腳本方式:

{"fields": ["boost","ucarid","boostapp","carpublishtime"],"query": {"function_score": {"query": {"match_all": {}},"functions": [{"script_score": {"script": "import java.util.Date;import java.text.DateFormat;import java.text.SimpleDateFormat;time2=((new Date().getTime()- new SimpleDateFormat('yyyy-MM-dd HH:mm:ss').parse(_source.carpublishtime.replace('T',' ')).getTime())/60000);if(time2<=60)_source.boostapp+time2/5 else if(time2<=120)_source.boostapp+(time2/10-6)*8 else if(time2<=180)_source.boostapp+(time2/10-12)*5 else _source.boostapp"}}],"boost_mode": "replace","score_mode": "sum"}},"from": 0,"size": 10
}

  

2、Nest方式:

QueryContainer mainQuery = null;
FunctionScoreQuery funcQuery = new FunctionScoreQuery();
funcQuery.ScoreMode = FunctionScoreMode.Sum;
funcQuery.BoostMode = FunctionBoostMode.Replace;
funcQuery.MaxBoost = 1000.0f;
ScriptFilter scriptFilter = new ScriptFilter();
scriptFilter.Script = "import java.util.Date;import java.text.DateFormat;import java.text.SimpleDateFormat;time2=((new Date().getTime()- new SimpleDateFormat('yyyy-MM-dd HH:mm:ss').parse(_source.carpublishtime.replace('T',' ')).getTime())/60000);if(time2<=60)_source.boostapp+time2/5 else if(time2<=120)_source.boostapp+(time2/10-6)*8 else if(time2<=180)_source.boostapp+(time2/10-12)*5 else _source.boostapp";
funcQuery.ScriptScore = scriptFilter;
mainQuery &= funcQuery;

  

轉載于:https://www.cnblogs.com/lijunhao/p/5564835.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284479.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284479.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284479.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

stm32串口通訊問題

stm32串口通訊問題 在串口試驗中&#xff0c;串口通訊不正常&#xff0c;則可能會出現以下問題&#xff1a; 1. 配置完成后&#xff0c;串口沒有任何消息打印。 原因&#xff1a;1&#xff0c;端口配置有問題&#xff0c;需要重新檢查I/O口的配置 2&#xff0c;接線有問題&…

中國元宇宙白皮書

PS&#xff1a;PDF目錄&#xff08;書簽&#xff09;是為便于閱讀&#xff0c;重新整理過的。 2022《中國元宇宙白皮書》-互聯網文檔類資源-CSDN下載1月26日&#xff0c;2022《中國元宇宙白皮書》在北京中關村正式全網發布。該白皮書由國科創新研究院首席科學家更多下載資源、學…

【GlobalMapper精品教程】002:GlobalMapper中文版安裝后的基本設置

本文講述安裝globalmapper后的一些簡單基本設置&#xff08;持續更新&#xff09;&#xff0c;為后續深入學習軟件打下基礎。訂閱專欄后私信作者&#xff0c;獲取中文安裝包及配套實驗數據包。 文章目錄1. 工具條的顯示與關閉2. 面積單位設置3. 選擇所選面要素的邊框4. 二三維聯…

SaltStack入門篇之遠程執行和配置管理

一、SaltStack概述 Salt&#xff0c;,一種全新的基礎設施管理方式&#xff0c;部署輕松&#xff0c;在幾分鐘內可運行起來&#xff0c;擴展性好&#xff0c;很容易管理上萬臺服務器&#xff0c;速度夠快&#xff0c;服務器之間秒級通訊。 salt底層采用動態的連接總線, 使其可以…

ArgoCD 用戶管理、RBAC 控制、腳本登錄、App 同步

命令行登錄參考&#xff1a;argocd 登錄登出[1]登錄&#xff1a;echo y | argocd login argocd-server.argocd.svc.cluster.local --password argoadmin.smallsoup --username admin登出&#xff1a;argocd logout argocd-server.argocd.svc.cluster.local創建用戶、授權創建用…

敏捷需要重構嗎?不需要嗎?

在傳統的Scrum中&#xff0c;Sprint的長度為一個月&#xff0c;現在一般時間更短。這意味著團隊就得在項目剛開始的兩周或者一個月內交付完成的軟件。軟件來自于產品負責人的backlog。它必須由特征組成。要正確的做到Scrum&#xff0c;我們不能做基礎架構之類的東西&#xff0c…

【GlobalMapper精品教程】005:影像拼接與裁切(分幅)作業案例教程

本文講述Globalmapper影像拼接與裁剪案例教程。 文章目錄 一、影像的拼接(1)針對少量影像的拼接(2)針對大量影像的拼接二、影像的裁剪一、影像的拼接 (1)針對少量影像的拼接 如果影像數量比較小,可以通過加載→導出的方式進行拼接。 如下圖所示,案例數據(配套實驗數…

元宇宙行業深度研究報告:為什么元宇宙是下一代互聯網?

目錄 1、什么是元宇宙&#xff1f;為什么元宇宙是下一代互聯網 1.1、 元宇宙&#xff1a;下一代沉浸式互聯網 1.1.1、超越虛擬與現實的科幻暢想&#xff1a;元宇宙概念來源 1.1.2、新技術由點突破連接成面&#xff0c;移動互聯網繼承者的孕育 1.1.3、元宇宙的五大要素&…

細節總結(一)

self.XXX與_XXX的區別 通過self.XXX得到的數據相當于調用get函數取值,等價于[self XXX];而通過_XXX獲取的是自己的實例變量,直接對變量進行操作,并未調用get函數。所以,通過懶加載方式初始化的變量只能通過self.XXX調用,否則可能會存在未初始化的問題。self.xxx是對屬性的訪問;…

redis 安裝錯誤 jemalloc.h: No such file or directory

為什么80%的碼農都做不了架構師&#xff1f;>>> 錯誤描述 [rootmysql-rtb-slave redis-4.0.1]# make && make install cd src && make all make[1]: Entering directory /usr/local/src/redis-4.0.1/srcCC Makefile.dep make[1]: Leaving director…

OAuth,JWT ,OIDC你們搞得我好亂啊

hi&#xff0c;這里是桑小榆&#xff0c;這次分享的不是生活文&#xff0c;而是技術文。基于OAuth2.0協議的授權認證&#xff0c;初次接觸授權認證知識的時候&#xff0c;出現了不少熱門名詞&#xff0c;“OAuth”&#xff0c;“JWT”&#xff0c;“OIDC”&#xff0c;這簡直讓…

MyEclipse快捷鍵大全

存盤 Ctrls(肯定知道) 注釋代碼 Ctrl/ 取消注釋 Ctrl\(Eclipse3已經都合并到Ctrl/了) 代碼輔助 Alt/ 快速修復 Ctrl1 代碼格式化 CtrlShiftf 整理導入 CtrlShifto 切換窗口 Ctrlf6 <可改為ctrltab方便> ctrlshiftM 導入未引用的包 ctrlw 關閉單個窗口 F3 跳轉到類、變量的…

軟件測試技術第二次作業——程序錯誤的判斷

在做作業之前我們首先要明確軟件測試過程中的幾個名詞&#xff1a; Fault&#xff1a;在軟件測試中&#xff0c;fault是指程序中靜態的缺陷&#xff0c;也就是指在程序中存在的編程錯誤。 Error&#xff1a;在軟件測試中&#xff0c;error是指由于程序中存在的fault而產生的不正…

【GlobalMapper精品教程】006:Excel等表格(.xls)或文本(.txt .csv)坐標文件生成矢量點

【拓展閱讀】: 【QGIS入門實戰精品教程】4.5:QGIS打開Excel中的點坐標,并生成矢量文件 【ArcGIS微課1000例】0022:ArcGIS點(點坐標)自動連成線操作案例教程 【ArcGIS風暴】ArcGIS 10.2導入Excel數據X、Y坐標(經緯度、平面坐標),生成Shapefile點數據圖層 【ArcGIS風暴】…

Java編程思想 學習筆記1

一、對象導論 1.抽象過程   Alan Kay曾經總結了第一個成功的面向對象語言、同時也是Java所基于的語言之一的Smalltalk的五個基本特性&#xff0c;這些特性表現了純粹的面向對象程序設計方式   1&#xff09;萬物皆對象。   2&#xff09;程序是對象的集合&#xff0c;它們…

不只是日志收集,項目監控工具Sentry的安裝、配置、使用

前言上一篇文章介紹了ExceptionLess這個日志收集系統&#xff1a;ExceptionLess的安裝、配置、使用由于ExceptionLess官方提供的客戶端只有.Net/.NetCore平臺和js的&#xff0c;本文繼續介紹另一個日志收集系統&#xff1a;SentrySentry 是一個實時事件日志記錄和聚合平臺。&am…

64個數據分析常用術語

導讀&#xff1a;本篇文章&#xff0c;我們來講講數據分析常用語。 內容綜合整理自網絡 01 絕對數和相對數 絕對數&#xff1a;是反應客觀現象總體在一定時間、一定地點下的總規模、總水平的綜合性指標&#xff0c;也是數據分析中常用的指標。比如年GDP&#xff0c;總人口等等。…

redis 的bitmap 開源包 bitmapist的應用

2019獨角獸企業重金招聘Python工程師標準>>> 原理&#xff1a;http://my.oschina.net/u/1458120/blog/545224 bitmap包&#xff1a;https://github.com/Doist/bitmapist 要求redis> 2.6.0 bitmapist-master.zip 安裝自己下載解壓 python setup.py install &…

Django Views(視圖函數)

http請求中產生兩個核心對象&#xff1a; http請求&#xff1a;HttpRequest對象 http響應&#xff1a;HttpResponse對象 所在位置&#xff1a;django.http 之前我們用到的參數request就是HttpRequest 檢測方法&#xff1a;isinstance(request,HttpRequest) 1 HttpRequest對象…