admin管理员组文章数量:1624792
接触ELK这么久,一直都在日志分析和系统运维方面兜圈圈。今天来玩转一下搜索技能,填补一下这方面的空白。主要也是好多天没更新博客了,来写一篇
文章目录
-
- 基本需求
- 任务分解
-
- web 前端
- web 后端
-
- 索引替换
- 文件监控与索引
- 文件下载
- 结语
何为文件搜索系统?其实简单一点,就可以想象为一个带用户界面的grep,可以根据你提供的关键字查询包含该内容的文件。与grep一样,该系统应该能返回包含该搜索条件的文件名,行号和具体内容等,同时应该支持高亮。与grep只支持正则表达式不一样的是,以elasticsearch为基础的搜索系统,能支持更多的搜索模式和匹配模式。当然,我们的系统肯定是比grep提供更多的功能。
基本需求
特点如下:
- 基于web的用户界面,使用浏览器就可以直接访问
- 可以对文件内容进行搜索和匹配,并且返回文件基本信息和关键字高亮,并提供链接远程打开文件
- 支持各种富文本内容,包括ppt, pdf等
- 可以监控文件的变化,当文件有增删改之后,能够重新索引文件
我们先看看最终的效果:
任务分解
再简单分解一下所需要的技术:
- web前端:
- UI:提供搜索条、展示搜索结果面板和文件打开链接
- 逻辑:将搜索内容组装为elasticsearch的搜索语句发送到后端,并且将response进行合理的处理
- web后端:
- web服务器提供web API服务
- 同时对接elasticsearch,作为中间件,处理
前端请求 <——> elasticsearch
之间的互动 - web文件服务器,提供静态文件的访问
- 数据库:
- elasticsearch作为数据库,包含文件的索引和基本信息
- 文件监控与索引
- 需要对特定目录下的文件进行监控和索引
- 任何的增删改动作都触发文件的索引(把文件索引到elasticsearch当中,以便可以搜索)
咋一看貌似挺复杂的。但如同所有的软件开发,只要不是特别创新的功能,总会有人已经帮你踩好了坑,我们要做的是找到合适的轮子而不是重复造轮子(一开始也是打算自己把这套东西都实现了,结果一google,啥都有)。
为了更方便的集成搜索服务到你的APP或者网站,elastic提供了一套search UI (官网)。只需要寥寥几行代码,即可内嵌一个非常美观的search套件到你的应用或者网站当中。我们的实现也主要是基于这个search UI.
具体的代码可查地址。
web 前端
但是这套工具的是默认你使用App search或者site search服务的,其接口设置是使用一个connector与远程的search服务进行交互。
如果我们没有购买类似的服务,只能修改这个代码为使用本地的elasticsearch。具体的示例在github上也能找到,我们的代码也是基于这个example。
所需的component大致如下:
package.json:
{
"name": "elasticsearch-example",
"version": "0.8.0",
"private": true,
"proxy": "http://localhost:9000",
"dependencies": {
"@elastic/react-search-ui": "0.8.0",
"@elastic/react-search-ui-views": "0.8.0",
"@elastic/search-ui": "0.8.0",
"react": "^16.8.6",
"react-dom": "^16.8.6",</
本文标签: 界面文件系统Elasticsearch
版权声明:本文标题:使用Elasticsearch搭建一个文件搜索系统(带界面) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728912765a1179317.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论