AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

來自釘釘群的問題—Elasticsearch 如何實現文件名自定義排序?

來源: 責編: 時間:2024-02-02 16:59:53 255觀看
導讀1、背景在數字時代,圖像數據的管理已成為數據架構的一部分。然而,隨之而來的挑戰是如何有效地索引和檢索這些圖像文件。這不僅涉及存儲,更重要的是如何根據特定的屬性(如文件名中的數字)進行排序,以便用戶可以按照預期的順

1、背景

在數字時代,圖像數據的管理已成為數據架構的一部分。然而,隨之而來的挑戰是如何有效地索引和檢索這些圖像文件。ThX28資訊網——每日最新資訊28at.com

這不僅涉及存儲,更重要的是如何根據特定的屬性(如文件名中的數字)進行排序,以便用戶可以按照預期的順序查看圖像。ThX28資訊網——每日最新資訊28at.com

如下問題來自Elastic 釘釘技術交流群:ThX28資訊網——每日最新資訊28at.com

圖片圖片ThX28資訊網——每日最新資訊28at.com

2、解決方案探討

在Elasticsearch中,我們經常面對需要對數據進行排序的需求。單就排序,咱們之前有過幾篇文章分析不同業務場景的排序實現。ThX28資訊網——每日最新資訊28at.com

僅就上圖中的文件名進行排序,會怎么樣呢?我們構造一下數據,執行一下看。ThX28資訊網——每日最新資訊28at.com

用默認動態Mapping 結構,批量寫入數據。

POST /my_photos/_bulk{ "index" : { "_id" : "1" } }{ "photo_id" : "photo1.jpg", "upload_date" : "2024-02-01T10:00:00" }{ "index" : { "_id" : "2" } }{ "photo_id" : "photo2.jpg", "upload_date" : "2024-02-01T10:05:00" }{ "index" : { "_id" : "3" } }{ "photo_id" : "photo12.jpg", "upload_date" : "2024-02-01T10:10:00" }{ "index" : { "_id" : "4" } }{ "photo_id" : "photo111.jpg", "upload_date" : "2024-02-01T10:15:00" }### 執行檢索GET /my_photos/_search{  "query": {    "match_all": {}  },  "sort": [    {      "photo_id.keyword": {        "order": "asc"      }    }  ]}

召回結果,同圖中后半部分結果一致。ThX28資訊網——每日最新資訊28at.com

圖片圖片ThX28資訊網——每日最新資訊28at.com

結果并沒有達到預期。ThX28資訊網——每日最新資訊28at.com

而可行的解決方案,還得從文件名入手才可以。圖像文件名包含數字,需要根據這些數字進行排序,這才是根本!ThX28資訊網——每日最新資訊28at.com

3、解決方案實現

我們采用兩種不同的解決方案來嘗試解決這個問題。ThX28資訊網——每日最新資訊28at.com

第一種:基于腳本排序。ThX28資訊網——每日最新資訊28at.com

第二種:復雜問題簡單化,預處理管道拆分出數值字段,基于數值排序。ThX28資訊網——每日最新資訊28at.com

3.1 方案1:腳本排序實現

使用 _script 進行排序是一種靈活的方法,它允許我們編寫自定義腳本來解析文件名并提取排序依據的數字。ThX28資訊網——每日最新資訊28at.com

GET /my_photos/_search{  "query": {    "match_all": {}  },  "sort": {    "_script": {      "type": "number",      "script": {        "lang": "painless",        "source": """          String photoId = doc['photo_id.keyword'].value;          if (photoId == null) return 0;          Matcher m = /[0-9]+/.matcher(photoId);          if (m.find()) {            return Integer.parseInt(m.group(0));          } else {            return 0;          }        """      },      "order": "asc"    }  }}

執行結果已經有序:ThX28資訊網——每日最新資訊28at.com

圖片圖片ThX28資訊網——每日最新資訊28at.com

上述腳本基于正則表達式從photo_id字段中查找并提取出數字,如果找到就返回這個數字,如果找不到就返回0。ThX28資訊網——每日最新資訊28at.com

這樣的操作對于根據數字對文檔進行排序非常有用。ThX28資訊網——每日最新資訊28at.com

雖然這種方法非常強大,但它可能會因為腳本的執行而影響查詢性能,數據量巨大的時候,咱們要慎用!ThX28資訊網——每日最新資訊28at.com

3.2 方案2:預處理解決方案實現

除了上面的方案,另一種方法是在索引數據時使用Ingest管道預處理圖像文件名。ThX28資訊網——每日最新資訊28at.com

這樣可以在數據索引時就提取出文件名中的數字并存儲在一個專門的字段中。ThX28資訊網——每日最新資訊28at.com

這種方法的好處是可以顯著提高排序的效率,因為數字已經被預處理并作為數值類型存儲,使得排序操作更加快速。ThX28資訊網——每日最新資訊28at.com

就是開頭咱們提到的復雜問題簡單化。ThX28資訊網——每日最新資訊28at.com

創建預處理管道,基于 grok 提取數值字段

PUT _ingest/pipeline/extract_photo_number{  "description": "Extracts numbers from photo_id and stores it in photo_number",  "processors": [    {      "grok": {        "field": "photo_id",        "patterns": ["%{NUMBER:photo_number:int}"]      }    }  ]}DELETE my_photos_20240201### 創建索引的時候,記得指定上面創建好的預處理管道。### 新增的字段photo_number,和上面的預處理管道獲取的字段一一對應。PUT my_photos_20240201{  "settings": {    "default_pipeline":"extract_photo_number"  },   "mappings": {    "properties": {      "photo_id": {        "type": "text",        "fields": {          "keyword": {            "type": "keyword",            "ignore_above": 256          }        }      },      "photo_number": {        "type": "long"      },      "upload_date": {        "type": "date"      }    }  }}### 批量寫入數據POST /my_photos_20240201/_bulk{ "index" : { "_id" : "1" } }{ "photo_id" : "photo1.jpg", "upload_date" : "2024-02-01T10:00:00" }{ "index" : { "_id" : "2" } }{ "photo_id" : "photo2.jpg", "upload_date" : "2024-02-01T10:05:00" }{ "index" : { "_id" : "3" } }{ "photo_id" : "photo12.jpg", "upload_date" : "2024-02-01T10:10:00" }{ "index" : { "_id" : "4" } }{ "photo_id" : "photo111.jpg", "upload_date" : "2024-02-01T10:15:00" }### 執行檢索和排序POST my_photos_20240201/_search{  "query": {    "match_all": {}  },  "sort": [    {      "photo_number": {        "order": "asc"      }    }  ]}

官方文檔參考:ThX28資訊網——每日最新資訊28at.com

https://www.elastic.co/guide/en/elasticsearch/reference/current/grok-processor.htmlThX28資訊網——每日最新資訊28at.com

執行結果如下:ThX28資訊網——每日最新資訊28at.com

圖片圖片ThX28資訊網——每日最新資訊28at.com

與腳本排序對比可以看出:ThX28資訊網——每日最新資訊28at.com

  • 預處理方案數據的處理邏輯前移,發生在數據索引的階段,而非查詢階段;
  • 查詢時可以直接依據數值類型的 photo_number字段進行快速排序,無需在查詢時動態解析文本字段,從而提高了查詢性能,并減少了對資源的消耗。
  • 還提升了數據結構的清晰度和索引的整體效率。

4、小結

本文探討了在Elasticsearch中對包含數字的圖像文件名進行排序的挑戰及其解決方案。ThX28資訊網——每日最新資訊28at.com

在選擇哪種方案時,我們需要考慮實際需求和系統資源。ThX28資訊網——每日最新資訊28at.com

如果對性能有較高要求,預處理方案更為合適。但如果需求復雜多變,可能需要腳本排序的靈活性。ThX28資訊網——每日最新資訊28at.com

我更想跟大家探討的是:未來的數據建模應考慮到數據的索引和查詢模式。ThX28資訊網——每日最新資訊28at.com

例如,如果我們知道將來需要按照文件名中的數字排序,那么在設計數據模型時就應該考慮到這一點,以便于實現高效的查詢。ThX28資訊網——每日最新資訊28at.com

前置考慮得越充分,后面就越省事!ThX28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-71940-0.html來自釘釘群的問題—Elasticsearch 如何實現文件名自定義排序?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 使用Go Gin SecureJSON技術保護你的JSON數據

下一篇: 現代 PHP 應用程序服務器FrankenPHP,自動支持HTTPS/HTTP2/HTTP3

標簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • 重估百度丨“晚熟”的百度云,能等到春天嗎?

    ©自象限原創作者|程心排版|王喻可2016年7月13日,百度云計算戰略發布會在北京舉行,宣告著百度智能云的正式啟程。彼時的會場座無虛席,甚至排隊排到了門外,在場的所有人幾乎都
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準追劇女孩們的古偶劇集,2021年有優酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 最“俊美”淘寶賣家,靠直播和短視頻圈粉,上架秒光,年銷3000萬

    來源 | 電商在線文|易琬玉編輯|斯問受訪店鋪:Ringdoll戒之人形圖源:微博@御座的黃山、“Ringdoll戒之人形”淘寶店鋪有關外貌的評價,黃山已經聽累了。生于1985年的他,哪
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元“人在職場,應該選擇什么樣的著裝?”近日,在網絡上,一個與著裝相關的帖子引發關注,在該帖子里,一位在高級寫字樓亞洲金
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創 作者|程心 羅輯2023年之前,對于自己的“今天”,百度也很迷茫。“新業務到 2022 年底還是 0,希望 2023 年出來一個 1。”這是2022年底,李彥宏
  • OPPO K11評測:旗艦級IMX890加持 2000元檔最強影像手機

    【Techweb評測】中端機型用戶群體巨大,占了中國目前手機市場的大頭,一直以來都是各手機品牌的“必爭之地”,其中OPPO K系列機型一直以來都以高品質、
  • 中關村論壇11月25日開幕,15位諾獎級大咖將發表演講

    11月18日,記者從2022中關村論壇新聞發布會上獲悉,中關村論壇將于11月25至30日在京舉行。本屆中關村論壇由科學技術部、國家發展改革委、工業和信息化部、國務
Top