如何用 Elasticsearch 实现 Word、PDF,TXT 文件的全文内容检索?

本文介绍了如何使用Elasticsearch实现对Word、PDF、TXT文件的全文内容检索。通过Elasticsearch的ingest node和attachment processor插件处理文件,结合ik分词器进行中文分词,实现高效搜索。文章还探讨了文件上传、编码和查询等问题,以及存在的文件长度限制和编码优化挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单介绍一下需求

  1. 能支持文件的上传,下载

  2. 要能根据关键字,搜索出文件,要求要能搜索到文件里的文字,文件类型要支持 word,pdf,txt

文件上传,下载比较简单,要能检索到文件里的文字,并且要尽量精确,这种情况下很多东西就需要考虑进去了。这种情况下,我决定使用 Elasticsearch 来实现。

因为准备找工作刷牛客的原因,发现很多面试官都问到了 Elasticsearch,再加上那时候我连 Elasticsearch 是什么东西都不知道,所以就决定尝试一下新东西。不得不说 Elasticsearch 版本更新的是真的快,前几天才使用了 7.9.1,结果 25 号就出来了 7.9.2 版本。

Elasticsearch 简介

Elasticsearch 是一个开源的搜索文献的引擎,大概含义就是你通过 Rest 请求告诉它关键字,他给你返回对应的内容,就这么简单。

Elasticsearch 封装了 Lucene,Lucene 是 apache 软件基金会一个开放源代码的全文检索引擎工具包。Lucene 的调用比较复杂,所以 Elasticsearch 就再次封装了一层,并且提供了分布式存储等一些比较高级的功能。

基于 Elasticsearch 有很多的插件,我这次用到的主要有两个,一个是 kibana,一个是 Elasticsearch-head。

  • kibana 主要用来构建请求,它提供了很多自动补全的功能。

  • Elasticsearch-head 主要用来可视化 Elasticsearch。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。

项目地址:https://github.com/YunaiV/ruoyi-vue-pro

开发环境

首先安装 Elasticsearch,Elasticsearch-head,kibana,三个东西都是开箱即用,双击运行 。需要注意的是 kibana 的版本要和 Elasticsearch 的版本对应。

Elasticsearch-head 是 Elasticsearch 的可视化界面,Elasticsearch 是基于 Rest 风格的 API 来操作的,有了可视化界面,就不用每次都使用 Get 操作来查询了,能提升开发效率。

Elasticsearch-head 是使用 node.js 开发的,在安装过程中可能会遇到跨域的问题:Elasticsearch 的默认端口是 9200,而 Elasticsearch-head 的默认端口是 9100,需要改一下配置文件,具体怎么改就不详细说啦,毕竟有万能的搜索引擎。

Elasticsearch 安装完成之后,访问端口,就会出现以下界面。

Elasticsearch 主页面

基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba 。

项目地址:https://github.com/YunaiV/onemall

核心问题

有两个需要解决的核心问题,文件上传和输入关键词查询。

文件上传

首先对于 txt 这种纯文本的形式来说,比较简单,直接将里面的内容传入即可。但是对于 pdf,word 这两种特殊格式,文件中除了文字之外有很多无关的信息,比如图片,pdf 中的标签等这些信息。这就要求对文件进行预处理。

Elasticsearch5.x 以后提供了名为 ingest node 的功能,ingest node 可以对输入的文档进行预处理。如图,PUT 请求进入后会先判断有没有 pipline,如果有的话会进入 Ingest Node 进行处理,之后才会正式被处理。

引用自 Elastic 中国社

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值