Elastic Search + fscrawler 实现文档上传并搜索过滤

需求:实现一个搜索功能,搜索的内容来自上传的文档(MS Office 文档),后期也有上传图片的文字,需要全词匹配搜索高亮,还有根据用户,状态等过滤

 

 

工具:Elastic Search(后文简称ES)

上传文件处理:Fcrawler

 

先说现有代码逻辑:

同事一个PHP项目,现在越做越大,小型OA的感觉了(PHP做到现在吃力啊…),现在客户需要增加一个搜索的需求,就交给我来调研了。 我本人是搞.Net的,这俩月在接手一个Ruby项目,还有个C#项目的维护,本来是让我这个月开始一个Java项目的。不提这个了,大概就这样,然后这周末我又来加班了,基本上我这块搞得差不多了,然后来总结一下吧。

 

文档上传本来PHP那边已经做好了,但是boss 说太不稳定了,所以从上传到最后搜索,都重新搞吧。服务器部署是在AWS上,现在AWS支持的ES版本最高是7.1(当前最新版本是7.4.2),我现在本地Windows环境搭建一套 EK(ES + kibana),然后走一下,测试一下可行性。

  1. 安装包下载(ES一定要与Kibana版本相对应):
    1. https://fscrawler.readthedocs.io/en/fscrawler-2.5/installation.html
    2. https://www.elastic.co/downloads/elasticsearch
    3. https://www.elastic.co/downloads/kibana
    4. 附图:Elastic Search + fscrawler 实现文档上传并搜索过滤
  2. 老版本下载:https://www.elastic.co/downloads/past-releases#kibana
  3. 本地安装,ES就是傻瓜式安装(.msi),Kibana的话压缩包解压,然后bin\kibana.bat
    1. 附图Elastic Search + fscrawler 实现文档上传并搜索过滤
  4. 安装完成之后浏览器打开
    1. 附图:Elastic Search + fscrawler 实现文档上传并搜索过滤
  5. fscrawler:https://fscrawler.readthedocs.io/en/fscrawler-2.5/user/getting_started.html 比着来就行
  6. 比较想说的就是那个添加附加信息(例如是哪个用户上传的),我想的是文档上传放到一个文件夹,附带把附加信息存到另外一个同名的.txt文件,然后fscrawler每隔一段时间便利文件夹时,顺便添加信息(https://fscrawler.readthedocs.io/en/fscrawler-2.5/admin/fs/rest.html#additional-tagsElastic Search + fscrawler 实现文档上传并搜索过滤按照这个来我在本地是不成功的,,可以在Elastic Search + fscrawler 实现文档上传并搜索过滤这个地方看log。  不成功是因为格式不对,我改成如下:
  1. {  
  2.     "external": {  
  3.         "tenantId": 23,  
  4.         "author": 34,  
  5.         "description": "these are additional tags"  
  6.     }  
  7. }  

Elastic Search + fscrawler 实现文档上传并搜索过滤

Elastic Search + fscrawler 实现文档上传并搜索过滤

 

external就是我想加进去的

 

 

Elastic Search + fscrawler 实现文档上传并搜索过滤