ES查詢按時時間過濾


數據量:document 大概有2KW+,每個document下有一個nest數組結構,數據量最多能達到上百個,每個數組的元素中有個expire_time,搜索時會通過expire_time進行過濾操作

搜索時:es的時間過濾{"from": {{from}}{{^from}}0{{/from}},

"size": {{size}}{{^size}}100{{/size}},
"query": {
"bool":{
"filter":[
{
"nested":{
"path":"object_list",
"query":{
"bool":{
"filter":[
{
"term":{"object_list.object_id":"{{objectId}}" }
}
,{
"range":{
"object_list.expire_time":{
"gt":"now/m"
} }}]}}}}]}}
}

gt對時間的操作性能有很大的影響(分鍾級),在查詢時會有很大的抖動,延時很大,在這里我們對數據做一個定時腳本,規避掉這個問題

POST /ptp_tags/_update_by_query?conflicts=proceed
{
"script":{
"inline":"ctx._source.object_list.removeIf((item)->item.expire_time<System.currentTimeMillis())",
"lang":"painless"
},
"query":{
"range":{
"object_list.expire_time":{
"gt":"now/m"}
}}

如果對時間不是特別敏感,定時清理掉過期的數據,減少查詢時候的結果集


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM