日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

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

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

1、背景

在數(shù)字時代,圖像數(shù)據(jù)的管理已成為數(shù)據(jù)架構(gòu)的一部分。然而,隨之而來的挑戰(zhàn)是如何有效地索引和檢索這些圖像文件。LoX28資訊網(wǎng)——每日最新資訊28at.com

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

如下問題來自Elastic 釘釘技術(shù)交流群:LoX28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LoX28資訊網(wǎng)——每日最新資訊28at.com

2、解決方案探討

在Elasticsearch中,我們經(jīng)常面對需要對數(shù)據(jù)進(jìn)行排序的需求。單就排序,咱們之前有過幾篇文章分析不同業(yè)務(wù)場景的排序?qū)崿F(xiàn)。LoX28資訊網(wǎng)——每日最新資訊28at.com

僅就上圖中的文件名進(jìn)行排序,會怎么樣呢?我們構(gòu)造一下數(shù)據(jù),執(zhí)行一下看。LoX28資訊網(wǎng)——每日最新資訊28at.com

用默認(rèn)動態(tài)Mapping 結(jié)構(gòu),批量寫入數(shù)據(jù)。

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" }### 執(zhí)行檢索GET /my_photos/_search{  "query": {    "match_all": {}  },  "sort": [    {      "photo_id.keyword": {        "order": "asc"      }    }  ]}

召回結(jié)果,同圖中后半部分結(jié)果一致。LoX28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LoX28資訊網(wǎng)——每日最新資訊28at.com

結(jié)果并沒有達(dá)到預(yù)期。LoX28資訊網(wǎng)——每日最新資訊28at.com

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

3、解決方案實現(xiàn)

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

第一種:基于腳本排序。LoX28資訊網(wǎng)——每日最新資訊28at.com

第二種:復(fù)雜問題簡單化,預(yù)處理管道拆分出數(shù)值字段,基于數(shù)值排序。LoX28資訊網(wǎng)——每日最新資訊28at.com

3.1 方案1:腳本排序?qū)崿F(xiàn)

使用 _script 進(jìn)行排序是一種靈活的方法,它允許我們編寫自定義腳本來解析文件名并提取排序依據(jù)的數(shù)字。LoX28資訊網(wǎng)——每日最新資訊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"    }  }}

執(zhí)行結(jié)果已經(jīng)有序:LoX28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LoX28資訊網(wǎng)——每日最新資訊28at.com

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

這樣的操作對于根據(jù)數(shù)字對文檔進(jìn)行排序非常有用。LoX28資訊網(wǎng)——每日最新資訊28at.com

雖然這種方法非常強(qiáng)大,但它可能會因為腳本的執(zhí)行而影響查詢性能,數(shù)據(jù)量巨大的時候,咱們要慎用!LoX28資訊網(wǎng)——每日最新資訊28at.com

3.2 方案2:預(yù)處理解決方案實現(xiàn)

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

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

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

就是開頭咱們提到的復(fù)雜問題簡單化。LoX28資訊網(wǎng)——每日最新資訊28at.com

創(chuàng)建預(yù)處理管道,基于 grok 提取數(shù)值字段

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### 創(chuàng)建索引的時候,記得指定上面創(chuàng)建好的預(yù)處理管道。### 新增的字段photo_number,和上面的預(yù)處理管道獲取的字段一一對應(yīng)。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"      }    }  }}### 批量寫入數(shù)據(jù)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" }### 執(zhí)行檢索和排序POST my_photos_20240201/_search{  "query": {    "match_all": {}  },  "sort": [    {      "photo_number": {        "order": "asc"      }    }  ]}

官方文檔參考:LoX28資訊網(wǎng)——每日最新資訊28at.com

https://www.elastic.co/guide/en/elasticsearch/reference/current/grok-processor.htmlLoX28資訊網(wǎng)——每日最新資訊28at.com

執(zhí)行結(jié)果如下:LoX28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LoX28資訊網(wǎng)——每日最新資訊28at.com

與腳本排序?qū)Ρ瓤梢钥闯觯?span style="display:none">LoX28資訊網(wǎng)——每日最新資訊28at.com

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

4、小結(jié)

本文探討了在Elasticsearch中對包含數(shù)字的圖像文件名進(jìn)行排序的挑戰(zhàn)及其解決方案。LoX28資訊網(wǎng)——每日最新資訊28at.com

在選擇哪種方案時,我們需要考慮實際需求和系統(tǒng)資源。LoX28資訊網(wǎng)——每日最新資訊28at.com

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

我更想跟大家探討的是:未來的數(shù)據(jù)建模應(yīng)考慮到數(shù)據(jù)的索引和查詢模式。LoX28資訊網(wǎng)——每日最新資訊28at.com

例如,如果我們知道將來需要按照文件名中的數(shù)字排序,那么在設(shè)計數(shù)據(jù)模型時就應(yīng)該考慮到這一點,以便于實現(xiàn)高效的查詢。LoX28資訊網(wǎng)——每日最新資訊28at.com

前置考慮得越充分,后面就越省事!LoX28資訊網(wǎng)——每日最新資訊28at.com

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

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

上一篇: 使用Go Gin SecureJSON技術(shù)保護(hù)你的JSON數(shù)據(jù)

下一篇: 現(xiàn)代 PHP 應(yīng)用程序服務(wù)器FrankenPHP,自動支持HTTPS/HTTP2/HTTP3

標(biāo)簽:
  • 熱門焦點
  • K60 Pro官方停產(chǎn) 第三方瞬間漲價

    雖然沒有官方宣布,但Redmi的一些高管也已經(jīng)透露了,Redmi K60 Pro已經(jīng)停產(chǎn)且不會補(bǔ)貨,這一切都是為了即將到來的K60 Ultra鋪路,屬于廠家的正常操作。但有意思的是該機(jī)在停產(chǎn)之后
  • 6月安卓手機(jī)性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經(jīng)正式過去了,我們也迎來了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發(fā)布之前,性能榜的榜單大體會以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領(lǐng)先
  • 把LangChain跑起來的三個方法

    使用LangChain開發(fā)LLM應(yīng)用時,需要機(jī)器進(jìn)行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過這個步驟先學(xué)習(xí)LLM模型的應(yīng)用,對Langchain進(jìn)行快速上手?本片講解3個把LangChain跑起來
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設(shè)備上有一個固定元素,當(dāng)激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認(rèn)行為,在本文中,我們將探討這個問題、為什么會發(fā)生
  • 新電商三兄弟,“抖快紅”成團(tuán)!

    來源:價值研究所作 者:Hernanderz 隨著內(nèi)容電商的概念興起,抖音、快手、小紅書組成的“新電商三兄弟”成為業(yè)內(nèi)一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • 網(wǎng)傳小米汽車開始篩選交付中心 建筑面積不低于3000平方米

    7月7日消息,近日有微博網(wǎng)友@長三角行健者爆料稱,據(jù)經(jīng)銷商集團(tuán)反饋,小米汽車目前已經(jīng)開始了交付中心的篩選工作,要求候選場地至少有120個車位,建筑不能低
  • 華為將推出盤古數(shù)字人大模型 可幫助用戶12小時完成數(shù)字人生成

    在今日舉行的2023年華為云數(shù)字文娛AI創(chuàng)新峰會上,華為云全球Marketing與銷售服務(wù)總裁石冀琳表示,華為云將在后續(xù)推出盤古數(shù)字人大模型,可幫助用戶12小
  • 支持aptX Lossless無損傳輸 iQOO TWS 1賽道版發(fā)布限時優(yōu)惠價369元

    2023年7月4日,“無損音質(zhì),聲動人心”iQOO TWS 1正式發(fā)布,支持aptX Lossless無損傳輸,限時優(yōu)惠價369元。iQOO TWS 1耳機(jī)率先支持端到端aptX Lossless無
  • 滴滴違法違規(guī)被罰80.26億 共存在16項違法事實

    滴滴違法違規(guī)被罰80.26億 存在16項違法事實開始于2121年7月,歷經(jīng)一年時間,網(wǎng)絡(luò)安全審查辦公室對“滴滴出行”網(wǎng)絡(luò)安全審查終于有了一個暫時的結(jié)束。據(jù)“網(wǎng)信
Top 主站蜘蛛池模板: 双城市| 石城县| 天全县| 雷山县| 延长县| 舞阳县| 罗源县| 浮山县| 西畴县| 罗江县| 临清市| 申扎县| 绍兴市| 新蔡县| 夏河县| 福鼎市| 石柱| 涞源县| 博爱县| 泸州市| 钟祥市| 金华市| 涟水县| 鲁山县| 镇平县| 苏尼特右旗| 大荔县| 天峻县| 巴楚县| 巢湖市| 莲花县| 定兴县| 邢台市| 英吉沙县| 乾安县| 伊宁市| 漠河县| 仁怀市| 嘉峪关市| 庆安县| 荣昌县|