基本需求
特點如下:
基於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....