開源-基于ElasticSearch的通用搜索引擎
- 撰寫目的
- 功能介紹與亮點
- 使用方法
- 專案地址
- 感觸
撰寫目的
最近在使用ElasticSearch(以下簡稱ES)搭建實時數倉的時候,對于索引中的資料都是撰寫代碼或者查詢陳述句進行搜索,效率低下,于是想著把搜索程序進行封裝,并將搜索結果直接展示在前端,
圖1:資料串列頁面

圖2:資料詳情頁面

功能介紹與亮點
1、用戶可以直接在搜索框內輸入資料,即可對ES庫進行搜索,搜索結果將通過串列方式展示,其中串列欄位可以自行配置(后續會講具體配置方法),
2、添加時間過濾與排序功能,用戶可以直接在頁面選定時間段對資料進行過濾與排序,前提是資料中需要存在時間欄位并且進行配置,
3、資料分類展示,方便檢索與查看相對應的資料,
4、高級搜索功能,可以在搜索詞內輸入“&&”或“||”進行“且與或”的邏輯搜索,相當于MySQL中的“or和and”,同時用戶可以使用“people.name=李奇峰”即可指定搜索的具體欄位,
使用方法
1、將代碼同步至本地后,找到application.yml并修改其中的配置,將資料替換成你本地的樣式,

2、代碼同步后,找到search.sql檔案并匯入至mysql庫中(需要提前建好庫,庫名隨意),匯入成功后出現兩張表:table_info、field_info,
其中table_info表結構如下:

field_info表結構如下:

專案地址
https://github.com/mrliqifeng/searchWebForEs
感觸
這個搜索引擎實作起來很快、難度不大,無非是對ElasticSearch介面的呼叫而已,撰寫的目的也只是為了服務于實時數倉,可以更快更方便的查看數倉中的資料,
但是在引擎的實作程序中,暴露出許多資料上的問題,比如臟資料過多導致搜索效率低下、單條資料過大導致http請求故障、時間欄位混亂導致無法根據時間進行過濾與排序、資料中的無用或低頻欄位過多占用大量的索引空間,過多的表導致業務使用方開發效率低,
于是在實作搜索引擎的程序中,連帶著做資料治理,資料分層,資料整合等作業,等到搜索引擎實作后,上面描述的資料問題已經基本解決,
最后的總結就是想要做出一個好的搜索引擎,或者說想要得心應手的使用資料,資料的治理作業占重中之重,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/239093.html
標籤:其他
