es實(shí)現(xiàn)mysql的like查詢(xún)
- 夕逆IT
- 數(shù)據(jù)庫(kù)
- 2024-11-16
- 1
大家好,關(guān)于es實(shí)現(xiàn)mysql的like查詢(xún)很多朋友都還不太明白,今天小編就來(lái)為大家分享關(guān)于es查詢(xún)語(yǔ)法 sql的知識(shí),希望對(duì)各位有所幫助! 文章目錄: 1、接上篇:如...
大家好,關(guān)于es實(shí)現(xiàn)mysql的like查詢(xún)很多朋友都還不太明白,今天小編就來(lái)為大家分享關(guān)于es查詢(xún)語(yǔ)法 sql的知識(shí),希望對(duì)各位有所幫助!
文章目錄:
- 1、接上篇:如何在項(xiàng)目中實(shí)現(xiàn)ES查詢(xún)功能?
- 2、Elasticarch實(shí)現(xiàn)Mysql的Like效果
- 3、如何使用ElasticSearch存儲(chǔ)和查詢(xún)數(shù)據(jù)
接上篇:如何在項(xiàng)目中實(shí)現(xiàn)ES查詢(xún)功能?
1、步驟概述選擇RestHighLevelClient作為ES原生客戶(hù)端,因?yàn)樗С指鼜?fù)雜的查詢(xún)場(chǎng)景。首先,你需要在paicoding-rvice模塊引入相關(guān)依賴(lài),并在paicoding-web模塊的配置文件中正確配置ES,如10.1:9200的連接信息,避免使用https前綴。
2、在 application.properties 全局配置文件中,配置 elasticarch 自定義環(huán)境變量 至此,客戶(hù)端配置完畢,項(xiàng)目啟動(dòng)的時(shí)候,會(huì)自動(dòng)注入到 Spring 的 ioc 容器里面。
3、若我們想接著上次讀取的結(jié)果進(jìn)行讀取下一頁(yè)數(shù)據(jù),第二次查詢(xún)?cè)诘谝淮尾樵?xún)時(shí)的語(yǔ)句基礎(chǔ)上添加arch_after,并指明從哪個(gè)數(shù)據(jù)后開(kāi)始讀取。 基本原理 es維護(hù)一個(gè)實(shí)時(shí)游標(biāo),它以上一次查詢(xún)的最后一條記錄為游標(biāo),方便對(duì)下一頁(yè)的查詢(xún),它是一個(gè)無(wú)狀態(tài)的查詢(xún),因此每次查詢(xún)的都是最新的數(shù)據(jù)。
4、當(dāng)兩個(gè)表之間存在多個(gè)外鍵關(guān)聯(lián)時(shí),需要明確指定外鍵名稱(chēng),并在查詢(xún)代碼中使用這些名稱(chēng)。函數(shù)可以用來(lái)手動(dòng)建立關(guān)聯(lián)關(guān)系,特別是在無(wú)法通過(guò)外鍵實(shí)現(xiàn)關(guān)聯(lián)的情況下。通過(guò)定義function,可以實(shí)現(xiàn)表與表之間的關(guān)聯(lián),即使它們之間沒(méi)有直接的外鍵聯(lián)系。遞歸關(guān)聯(lián),即一個(gè)表指向自身的關(guān)聯(lián),通常涉及自關(guān)聯(lián)表。
5、這些聽(tīng)起來(lái)令人向往的承諾,在實(shí)際操作中往往成為一場(chǎng)空。應(yīng)屆生銀行,真正被看重的可能只是他們能夠?yàn)閯?chuàng)造的業(yè)績(jī),而不是其才華或潛力。如果你是關(guān)系戶(hù),那恭喜你,這篇文章對(duì)你而言無(wú)用;如果你是非關(guān)系戶(hù),卻又夢(mèng)想在這樣的環(huán)境中實(shí)現(xiàn)職業(yè)生涯,那么你可能過(guò)于天真了。
6、記得先把 ES 的連接改成公網(wǎng),然后輸入一行命令就行了。比如我們要向 ES 插入一條數(shù)據(jù),傳入要的函數(shù)名、請(qǐng)求參數(shù)、代碼路徑: 成功后,就能在 ES 中看到新插入的數(shù)據(jù)了(通過(guò) Kibana 面板或 curl 查看): 本地測(cè)試好公共服務(wù)代碼后,把 ES 連接改成內(nèi)網(wǎng) IP,然后發(fā)布到云端。
Elasticarch實(shí)現(xiàn)Mysql的Like效果
Elasticarch作為一種高效的搜索引擎,可以替代Mysql在模糊搜索方面的性能瓶頸。客戶(hù)對(duì)Mysql中LIKE關(guān)鍵字的使用習(xí)慣,使得在引入ES時(shí)可能需要模擬這種效果。
至此,類(lèi)似 MySQL join 操作在 Elasticarch 中得以實(shí)現(xiàn),數(shù)據(jù)關(guān)聯(lián)處理效果直觀且高效。最后,提供其他命令,包括刪除 Pipeline 與 enrich,以靈活管理數(shù)據(jù)處理流程。
最近使用ES時(shí),有一個(gè)簡(jiǎn)單的需求,要求實(shí)現(xiàn)按照某個(gè)字段實(shí)現(xiàn)類(lèi)似mysql中的like查詢(xún)。 這里記錄下實(shí)現(xiàn)方式。
原因:MySQL B+樹(shù)索引結(jié)構(gòu)在模糊查詢(xún)時(shí)會(huì)失效,尤其在使用LIKE的通配符%時(shí)。時(shí)間分析:查詢(xún)耗時(shí)90ms,隨著數(shù)據(jù)量增加,耗時(shí)會(huì)持續(xù)增長(zhǎng)。解決方:針對(duì)小量數(shù)據(jù),采用MySQL全文索引;針對(duì)大量數(shù)據(jù)或者全文索引性能不理想,則考慮使用Elasticarch。
如何使用ElasticSearch存儲(chǔ)和查詢(xún)數(shù)據(jù)
1、創(chuàng)建索引設(shè)置向量字段 構(gòu)建支持向量檢索的映射,字段類(lèi)型設(shè)置為den_vector。2 寫(xiě)入數(shù)據(jù) 完成數(shù)據(jù)錄入。向量計(jì)算函數(shù) 1 余弦相似度:cosineSimilarity 計(jì)算查詢(xún)向量與文檔向量間的余弦相似度。若文檔den_vector字段與查詢(xún)向量維度不一致,將拋出異常。
2、在使用ES存儲(chǔ)數(shù)據(jù)時(shí),借助SpringBoot框架可輕松實(shí)現(xiàn)。引入ES相關(guān)依賴(lài)后,通過(guò)ElasticarchRestTemplate模板類(lèi)提供簡(jiǎn)便的接口,如save方法用于存儲(chǔ)數(shù)據(jù)。此方法接收自定義業(yè)務(wù)字段的數(shù)據(jù)和指定的索引名作為參數(shù),索引名類(lèi)似于MySQL中的表名。查詢(xún)數(shù)據(jù)則通過(guò)構(gòu)建查詢(xún)條件實(shí)現(xiàn)。
3、Elasticarch使用的查詢(xún)語(yǔ)言(DSL)擁有一套查詢(xún)組件,這些組件可以以無(wú)限組合的方式進(jìn)行搭配。這套組件可以在以下兩種情況下使用:過(guò)濾上下文(filteringcontext)和查詢(xún)上下文(querycontext)。查詢(xún)語(yǔ)句和過(guò)濾語(yǔ)句可以放在各自的上下文中。在ElasticSearchAPI中我們會(huì)看到許多帶有query或filter的語(yǔ)句。
4、總結(jié)而言,ElasticSearch的查詢(xún)流程包括GET和SEARCH兩種方式,各自具有不同的使用場(chǎng)景。GET操作簡(jiǎn)單直接,而SEARCH操作則涉及查詢(xún)和fetch階段,復(fù)雜度較高。同時(shí),GET操作中的實(shí)時(shí)數(shù)據(jù)存儲(chǔ)在lucene中,而SEARCH操作的查詢(xún)階段和fetch階段處理數(shù)據(jù)更為細(xì)致,能夠提供更精準(zhǔn)的查詢(xún)結(jié)果。
5、使用線上默認(rèn)的配置,uuid存為不分詞的字符串類(lèi)型。創(chuàng)建如下索引:首先寫(xiě)入100w不同的uuid,使用磁盤(pán)容量細(xì)節(jié)如下:可以看到正排數(shù)據(jù)、倒排索引數(shù)據(jù),列存數(shù)據(jù)容量占比幾乎相同,正排數(shù)據(jù)和倒排數(shù)據(jù)還會(huì)存儲(chǔ)Elasticarch的唯一id字段,所以容量會(huì)比列存多一些。
6、在開(kāi)始本節(jié)實(shí)際操作之前,請(qǐng)確保已經(jīng)正確好了 Elasticarch,方式可以參考:https://tup.scrape.center/elasticarch,完成之后確保其在本地 9200 端口上正常運(yùn)行即可。
關(guān)于es實(shí)現(xiàn)mysql的like查詢(xún),es查詢(xún)語(yǔ)法 sql的介紹到此結(jié)束,希望對(duì)大家有所幫助。
本文鏈接:http:///su/226454.html
下一篇:華為芯片最新消息