Elasticsearch 实现word、pdf、txt、excel文档内容快速检索(保姆级教程)

news2024/9/21 18:41:37

本文主要讲解ES如何从提取文档中提取内容(word、pdf、txt、excel等文件类型),实现快速检索文档内容实现。

特别说明一下,为什么用7.10.0版本,因为在项目中除了精确匹配的要求,也会有模糊查询(关键字是wildcard )的场景。wildcard 这个只有 7.9 版本之后才支持 所以我推荐你使用 7.1.0。

elasticsearch,el, kibana,版本需要一致,比如elasticsearch版本是7.10.0,那么el和kibana的版本也需要是7.10.0,elasticsearch-head-master无所谓,尽量别用太低的版本。

本文实现思路

  • 一、ES下载安装运行
    • 1.下载安装ES
    • 2.修改配置,启动ES
  • 二、安装ik分词器
    • 1.什么是ik分词器
    • 2.新建ik文件夹
    • 3.解压elasticsearch-analysis-ik-7.10.0.zip
  • 三、安装Attachment
    • 1.Attachment 介绍
    • 2.安装Attachment
  • 四、安装ES可视化工具elasticsearch-head-master
    • 1.启动成功后访问:http://localhost:9100/
  • 五、定义文本抽取管道(pipeline)
    • 1.请求地址(PUT ):_ingest/pipeline/attachment
  • 六、创建索引
    • 1.创建索引
  • 七、插入数据
    • 1.插入数据
  • 八、查询数据
    • 1.查询数据
    • 2.多条件查询
    • 九、Java 插入数据到Elasticsearch中进行各种类型文档的内容检索

一、ES下载安装运行

网盘包含:ES安装包、ik分词器、elasticsearch-head-master、kibana
网盘链接:https://pan.baidu.com/s/1_Vfcn0scS3vgZ2qSvc0TUw?pwd=j7f1
提取码:j7f1

在这里插入图片描述

1.下载安装ES

下载后解压文件夹,目录如图所示

在这里插入图片描述

在这里插入图片描述

2.修改配置,启动ES

进入到ES的config文件夹下,编辑 elasticsearch.yml 在末尾添加两行配置(该配置是为了不让ES进行签证认证),如果不加这两行配置,也可以去ES官网申请签证但是这个申请的签证是有试用期限的到期了还得重新申请所以我就直接给它过滤掉认证了。

http.cors.enabled: true
http.cors.allow-origin: “*”

在这里插入图片描述

这里再扩充一下后期用到的东西,现在你在自己电脑上访问ES没问题,如果外网其他电脑想连接你的ES,是需要再改一些配置的,还在在该文件里把框红的三个注释解开,不然会访问不到你的ES,因为ES默认是localhost访问,看图配置保存即可。
在这里插入图片描述

添加完配置后,进入ES的bin目录下,双击elasticsearch.bat,日志中提示started就说明启动成功啦

在这里插入图片描述

在这里插入图片描述

二、安装ik分词器

1.什么是ik分词器

ps:有人会好奇ik分词器是什么? 主要作用就是用来分词检索,比如 “我爱中国”,会进行粗粒分词和细粒分词,粗粒分词就是 “我爱” “中国”,细粒分词“我” “爱” “中” “国”,大概就是这个意思,想继续深挖的自行百度,我这里就不过多介绍了。后面会主要讲解它的使用方式

2.新建ik文件夹

进入到 elasticsearch-7.10.0\plugins 目录下,新建一个文件夹命名为小写 “ik”,这里有一个ingest-attachment文件夹,大家会发现你们没有,对滴!先别急,因为我之前已经装过了!后面我会讲它怎么下载以及作用,目前没有不耽误你们继续跟着文章学习。

在这里插入图片描述

3.解压elasticsearch-analysis-ik-7.10.0.zip

新建完 ik 文件夹后,把网盘中下载的 elasticsearch-analysis-ik-7.10.0.zip 解压到 ik文件夹里面,解压后的内容如下(解压完可以把elasticsearch-analysis-ik-7.10.0.zip删了,删不删无所谓),到这里我们的ik分词器就完成安装了。

在这里插入图片描述

三、安装Attachment

1.Attachment 介绍

简单理解就是处理文档的插件 ingest-attachment

Attachment 插件是 Elasticsearch 中的一种插件,允许将各种二进制文件(如PDF、Word文档等)以及它们的内容索引到 Elasticsearch 中。插件使用 Apache Tika 库来解析和提取二进制文件的内容。通过使用 Attachment 插件,可以轻松地在 Elasticsearch 中建立全文搜索功能,而无需事先转换二进制文件为文本。此说明来自:https://blog.csdn.net/lijie0213/article/details/134205963?spm=1001.2014.3001.5506

2.安装Attachment

windows安装先在ES的bin目录下执行命令 安装 ngest-attachment插件,刚才不是ik文件夹同级有一个 ingest-attachment,没错!现在我们来安装它!安装完后就是一堆jar包,附图就是安装完成后的样子。

在线安装
在ES的bin目录下执行命令 安装 ngest-attachment插件

elasticsearch-plugin install ingest-attachment

在这里插入图片描述

因为我已经下载过了,所以显示的日志会跟你们不一样,正常会有一个让你输入 Y 的提示,安装看不懂的可以看这篇博主的:https://blog.csdn.net/lijie0213/article/details/134205963?spm=1001.2014.3001.5506
在这里插入图片描述

离线安装网盘链接:https://pan.baidu.com/s/1RoUrVe_voYSFxnliB6eW3Q?pwd=qkpg
提取码:qkpg
在这里插入图片描述

四、安装ES可视化工具elasticsearch-head-master

无话可说,解压进入bin目录下,运行: npm run start

1.启动成功后访问:http://localhost:9100/

在这里插入图片描述
在这里插入图片描述
安装启动完成页面
在这里插入图片描述

五、定义文本抽取管道(pipeline)

下列复制粘贴到 elasticsearch-head-master 可视化工具的复合查询选项中

1.请求地址(PUT ):_ingest/pipeline/attachment

{
  "description": "Extract attachment information",
  "processors": [
    {
      "attachment": {
        "field": "content",
        "indexed_chars": 1000000,
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "content"
      }
    }
  ]
}

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/3b3d497e36a1469fb06dcf02a66ad68b.png
创建管道成功提示:

{
"acknowledged": true
}

六、创建索引

这个时候就可以创建我们自定义的索引了,索引这个东西你要研究的话还是有很多东西需要学的,我这里大概就说一下怎么去用,其他方面的自行百度。
关键词:mappings
mapping是映射,对比MySQL而言,他相当于MySQL的表结构定义。
包括:设置元数据、定义存储字段的类型、分区、副本等设置
关键词:properties 就是用来指定属性,比如下列索引内容中的 file_id,file_name 对应的就是你数据库表的字段,type是类型,keyword和text是ES中的字符串类型,
在这里插入图片描述

1、ik_max_word

会将文本做最细粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。

2、ik_smart
会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。

1.创建索引

//创建索引
请求类型:PUT
索引名称:file_data(自定义)
{
  "mappings": {
    "properties": {
      "file_id":{
        "type": "keyword"
      },
      "file_name":{
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "file_type":{
        "type": "keyword"
      },
	  "file_url":{
        "type": "keyword"
      },
	  "group_file_id":{
        "type": "keyword"
      },
	  "file_suffix":{
        "type": "keyword"
      },
	  "file_size":{
        "type": "keyword"
      },
	  "file_dir_name":{
        "type": "keyword"
      },
      "attachment": {
        "properties": {
          "content":{
            "type": "text",
            "analyzer": "ik_smart"
          }
        }
      }
    }
  }
}

七、插入数据

1.插入数据

POST file_data/_doc?pipeline=attachment
{
	"file_id":"1",
  "file_name":"性能分析排查思路",
  "file_type":"pdf",
  "file_url":"http://文件存储地址:8080/xxx/docs/raw/master/性能分析与内存问题排查思考.pdf",
  "group_file_id":"123456",
  "file_suffix":".pdf",
  "file_size":"33",
  "file_dir_name":"yryy",
  "content":"很长很长的base64内容粘贴到这了"
}

在这里插入图片描述
在这里插入图片描述

base64就是这玩意,一大长串,你给他扔content里就行了,管道会自动把base64里面的内容提取出来放到ES中,不用你再去做这些处理了。
在这里插入图片描述

八、查询数据

1.查询数据

POST file_data/_search
{
  "query": {
    "match": {
      "attachment.content": {
        "query": "内存泄漏",
        "analyzer": "ik_smart"
      }
    }
  }
}

这里提交的时候,注意一下请求方式,ES官方和很多博主说的都是GET请求,但是我得GET请求会查出所有数据,相当于我的查询参数设置没有生效,然后我用POST请求就成功了。这个好像是elasticsearch-head-master可视化工具的BUG,好像高版本已经修复了。
在这里插入图片描述

2.多条件查询

上面是我根据文件内容进行的查询,比如我想根据多条件查询怎么办呢?类似于mysql中的 and 条件 where id=1 and name=“文件名称”

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "attachment.content": {
              "query": "啊啊啊啊啊",
              "analyzer": "ik_smart"
            }
          }
        },
        {
          "match": {
            "file_name": "性能分析排查思路"
          }
        }
      ]
    }
  }
}

在这里插入图片描述

学习两位博主的文章:
https://blog.csdn.net/yuand7/article/details/136436712?spm=1001.2014.3001.5506

https://blog.csdn.net/lijie0213/article/details/134205963?spm=1001.2014.3001.5506

九、Java 插入数据到Elasticsearch中进行各种类型文档的内容检索

点击跳转:请看我这篇博客-Java 插入数据到Elasticsearch中进行各种类型文档的内容检索

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1678983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

合并K个升序链表

题目 解法一 优先级队列 思想 将每个链表中的一个节点存放到优先级队列中,本题采用小根堆,将小根堆中的根节点取出,插入到最终的链表中,并且将该节点在原链表中的下一个节点插入小根堆中(需要向下调整)&a…

Day_5

1. Apache ECharts Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表 官网地址:https://echarts.apache.org/zh/index.html 入门案例 快速入门&#x…

LearnOpenGL(十八)之面剔除

一、面剔除 对于一个3D立方体,无论我们从哪个方向,最多只能同时看到3个面。如果我们能够以某种方式丢弃另外几个看不见的面,我们就能省下超过50%的片段着色器执行数! 这正是面剔除(Face Culling)所做的。OpenGL能够检查所有面向…

ClassificationPrimitive 内部原理

ClassificationPrimitive 内部原理 发明 ClassificationPrimitive的真是个天才。其原理是利用 webgl 的模板缓冲区实现。 渲染两次, 首先是绘制模板, 然后绘制真正的内容。 示意图: function createClass() {const { program, uniforms } WebGLProgram.buildPrograms(gl, …

PMR-440N7Q韩国施耐德三和相序继电器EOCR-PMR

韩国施耐德三和EOCR继电器PMR-440N7Q PMR-440-N 直流电动机保护器:DCL、DOCR-S/H 欠电流继电器:EUCR-3C 交流电压继电器:EOVR、EVR-PD、EVR-FD、EUVR 韩国三和EOCR电动机保护器:EOCR-SS、EOCR-SS1/SS2、EOCR-AR、EOCR-ST、EOCR-SP、EOCR-SP1/SP2、EOCR-SE、EOCR-SE2/SE PMR-44…

会员网站如何创建具有不同仪表盘结构的用户帐户页面

用户帐户页面是中央用户仪表盘,用户可以在其中添加和编辑信息、发布和编辑帖子以及保存收藏夹项目。本教程介绍如何使用“内容”和“重写”模板模式设置帐户页面、为帐户页面创建子页面以及设置个人资料菜单等。 在本教程中,我们将介绍如何使用招聘网站…

Netty的组件和设计

目录 Channel、EventLoop和ChannelFuture Channel接口 EventLoop接口 ChannelFuture接口 ChannelHandler和ChannelPipeline ChannelHandler接口 ChannelPipeline接口 更加深入地了解ChannelHandler 编码器和解码器 抽象类SimpleChannelInboundHandler 引导 从高层次…

vue网页端控制台展示独有标记

效果展示 实现步骤 1. 新建js文件 定义一个类 用于提供控制台打印日志显示样式的方法 src\libs\util.log.js class Logger {// 定义静态方法static typeColor(type "default") {let color "";switch (type) {case "default":color "#3…

Lambda 表达式详解

LAMBDA ⚪ λ 希腊字母表中排序第十一位的字母, 英语名称为Lambda ⚪ 避免匿名内部类定义过多 ⚪ 其实质属于函数式编程的概念 ⚪ 也可称为闭包 ⚪ Lambda允许把一个函数作为方法的参数(函数作为参数传递进方法中)。 Lambda是在jdk8之后出现的所以现…

Xed编辑器开发第一期:使用Rust从0到1写一个文本编辑器

这是一个使用Rust实现的轻量化文本编辑器。学过Rust的都知道,Rust 从入门到实践中间还隔着好几个Go语言的难度,因此,如果你也正在学习Rust,那么恭喜你,这个项目被你捡到了。本项目内容较多,大概会分三期左右陆续发布&a…

WebLogic SSL应用

SSL 安全套接字层(SSL)是通过在客户端和Web服务器端之间进行身份验证,并对双方交换的数据进行加密,从而提供安全连接。 验证类型: 单向:客户端验证Web服务器端证书 双向:客户端验证Web服务器证书, Web服务器验证客户端证书 Weblogic Server12c 支持 SSL 3.0 和 TLS1.0 …

HCIP【Hybird实验】

目录 一、实验拓扑图: 二、实验要求: 三、实验思路: 四、实验过程: 1、配置PC的IP地址(不用配置网关,这个拓扑图没有使用到三层设备) 2、交换机配置 3、PC间进行测试: 一、实…

如何设计实用的ITSM自助服务台

在现代IT服务管理(ITSM)领域中,自助服务台已成为IT运维环境的核心组件。它作为企业内部信息中心与其他部门用户之间的桥梁,一个以用户为中心的平台,更注重用户的自主性和自助能力,使用户能够直接访问所需的…

ModuleNotFoundError: No module named ‘openpyxl‘的解决方案

问题描述: ModuleNotFoundError: No module named ‘openpyxl’ 这个错误表示你的 Python 环境中没有安装 openpyxl 这个模块。openpyxl 是一个用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库。 解决方案: 要解决这个问题,你需…

第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组 抓娃娃

//前缀和 #include<bits/stdc.h> using namespace std; #define int long long const int n1e611; int a,b,c,d[n],l,r; signed main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a>>b;map<int,int>t;for(int i1;i<a;i){cin>…

PCIe协议之-TLP Header详解(二)

✨前言&#xff1a; 在PCIe中&#xff0c;存在几种不同类型的请求&#xff0c;主要包括IO(Request)请求、存储器(Request)请求和配置(Request)请求。这些请求类型允许CPU与连接在PCIe总线上的设备进行通信和控制。 &#x1f31f;1. IO(Request)请求 定义与作用: IO请求&…

武汉星起航深耕亚马逊跨境领域,助全球卖家实现国际销售新突破

随着全球贸易的日益繁荣和互联网的快速发展&#xff0c;跨境电商行业迎来了前所未有的发展机遇。作为全球领先的电商平台&#xff0c;亚马逊以其丰富的商品品类、全球配送网络以及高效的物流体系&#xff0c;成为了众多卖家拓展国际市场的重要渠道。在这一背景下&#xff0c;武…

邦注科技 即热式节能模温机的原理及应用介绍

模温机是一种用于控制模具温度的设备&#xff0c;它在各种工业领域中发挥着重要作用&#xff0c;特别是在塑料加工行业中。以下是关于模温机的原理及应用的详细介绍&#xff1a; 原理 模温机的工作原理主要是通过加热和冷却功能&#xff0c;维持模具温度在一个恒定的范围内。…

银河麒麟操作系统下使用QT连接TiDB数据库开发步骤

目标:实现项目软件+硬件都运行在国产化操作系统平台上。 方法:在虚拟机中安装麒麟系统V10Sp1+Qt5.14.2+MySql8.0+TiDB软件,编译MySql驱动,测试连接TiDB数据库项目。 步骤: 1、使用虚拟机软件VMWare安装银河麒麟操作系统。 2、在银河麒麟系统上安装QT5.14.2软件。 3、…

WS2812C是一款将控制电路和RGB芯片集成在一个5050元器件封装中的智能控制LED光源

一般说明 WS2812C是一款将控制电路和RGB芯片集成在一个5050元器件封装中的智能控制LED光源。内部包括智能数字端口数据锁存器和信号整形放大驱动电路。还包括一个精密的内部振荡器和一个 12V电压可编程恒流控制部分&#xff0c;有效保证像素点光源颜色高度一致。 …