使用Elasticsearch搭建乙個檔案搜尋系統

2021-09-24 18:34:24 字數 2681 閱讀 1776

基本需求

特點如下:

基於web的使用者介面,使用瀏覽器就可以直接訪問

可以對檔案內容進行搜尋和匹配,並且返回檔案基本資訊和關鍵字高亮,並提供鏈結遠端開啟檔案

支援各種富文字內容,包括ppt, pdf等

可以監控檔案的變化,當檔案有增刪改之後,能夠重新索引檔案

我們先看看最終的效果:

任務分解

再簡單分解一下所需要的技術:

web前端:

邏輯:將搜尋內容組裝為elasticsearch的搜尋語句傳送到後端,並且將response進行合理的處理

web後端:

web伺服器提供web api服務

同時對接elasticsearch,作為中介軟體,處理 前端請求 —— elasticsearch 之間的互動

web檔案伺服器,提供靜態檔案的訪問

資料庫:

elasticsearch作為資料庫,包含檔案的索引和基本資訊

檔案監控與索引

需要對特定目錄下的檔案進行監控和索引

任何的增刪改動作都觸發檔案的索引(把檔案索引到elasticsearch當中,以便可以搜尋)

咋一看貌似挺複雜的。但如同所有的軟體開發,只要不是特別創新的功能,總會有人已經幫你踩好了坑,我們要做的是找到合適的輪子而不是重複造輪子(一開始也是打算自己把這套東西都實現了,結果一google,啥都有)。

具體的**可查位址。

web 前端

如果我們沒有購買類似的服務,只能修改這個**為使用本地的elasticsearch。具體的示例在github上也能找到,我們的**也是基於這個example。

所需的component大致如下:

package.json:

需要重寫一下autocomplete.js以適配我們自己的資料格式

web 後端

以上專案已經實現了乙個nodejs的後端,直接啟動npm start即可,但需要注意的是,需要通過環境變數指定elasticsearch的url,即完整的命令是:

索引替換

前面我們提到後端需要對接elasticsearch,作為中介軟體,處理 前端請求 —— elasticsearch 之間的互動,這部分**框架已經實現了,我們要做的是把索引替換為我們自己的索引。

檔案監控與索引

這裡,我們使用 fscrawler 就能完全滿足我們的需求。因為文件很齊全,我這裡就不一一解釋了。

我這裡監控了乙個目錄/users/documents/aws:

則對應的配置檔案,簡單的可以設定為:

以下是該工具寫入到es的物件為:

_index: files,

_type: _doc,

_id: f982d250b791df3ea3b1e0c1b184e283,

_version: 18,

_score: null,

_source: {

content: \n aws certified solutions architect – \nassociate ...,

meta: {

author: barnosky, timothy,

date: 2018-02-08t06:13:32.000+0000,

language: en-us,

creator_tool: microsoft word 2013,

created: 2018-02-08t06:13:32.000+0000

file: {

extension: pdf,

created: 2019-04-03t03:31:49.000+0000,

last_modified: 2019-04-03t03:31:49.000+0000,

last_accessed: 2019-06-05t08:08:22.000+0000,

indexing_date: 2019-06-05t08:08:22.479+0000,

filesize: 567176,

filename: aws_certified_solutions_architect_associate_feb_2018_ exam_guide_v1.5.2.pdf,

url: file:///users/caishichao/documents/aws/aws_certified_solutions_architect_associate_feb_2018_ exam_guide_v1.5.2.pdf

path: {

root: 431c7636e585854c841c8e88a25ea39,

virtual: aws_certified_solutions_architect_associate_feb_2018_ exam_guide_v1.5.2.pdf,

real: /users/caishichao/documents/aws/aws_certified_solutions_architect_associate_feb_2018_ exam_guide_v1.5.2.pdf

sort: [

-9223372036854776000

ui上可以通過讀取content,file,path的內容進行必要的展示

具體需要修改buildstate.js裡面的內容進行適配。

結語其實這個博文我沒有寫得特別的詳細,只是簡單的總結一下思路,希望對大家有幫助

誰在使用Elasticsearch

github github使用elasticsearch搜尋20tb的資料,包括13億的檔案和1300億行的 這個不用介紹了吧,碼農們都懂的,github在2013年1月公升級了他們的 搜尋,由solr轉為elasticsearch,目前集群規模為26個索引儲存節點和8個客戶端節點 負責處理搜尋請求...

ElasticSearch使用入門

es的安裝 啟動 cd.elasticsearch 2 4 3 bin elasticsearch bin elasticsearch d 後台執行 es安裝驗證 注意 預設啟動的時候es繫結的網路ip是本機127.0.0.1,只能通過這個ip訪問 兩種修改方式 1 修改config elastic...

ElasticSearch使用學習

elasticsearch是乙個基於lucene的搜尋服務,它通過倒排索引的方法提供了全文搜尋的能力。1 插入資料 elasticsearch中存放資料的為文件,有索引及型別名,如下插入兩文件 2 檢索文件 1 檢索id為1的文件 curl x get elasticsearch.in.netwa....