Elasticsearch 搜索引擎实现对文档内容进行快速检索(保姆级教程)

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

特别说明一下,为什么用7.10.0版本,因为在项目中除了精确匹配的要求,也会有模糊查询(关键字是wildcard )的场景。wildcard 这个只有 7.9 版本之后才支持 所以我推荐你使用 7.10.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.xdnf.cn/news/1424354.html

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

相关文章

如何选择开箱机厂家,看这几点!

在现代化生产线上,开箱机作为自动化包装设备的重要组成部分,其选择对于提升生产效率、降低成本至关重要。然而,市场上开箱机厂家众多,如何挑选出合适的合作伙伴成为了许多企业面临的难题。与星派一起探讨如何选择开箱机厂家&#…

Python实现管线建模 || 1.圆直管、方管

在Python 中可以使用开源的三维库(例如 trimesh)来创建简单的管线模型,并将其导出为多种 3D 模型格式。本文为大家介绍如何使用 trimesh 创建圆直管并导出为 .obj 等通用三维格式模型。 pip安装trimesh pip install trimesh 支持的文件格式…

easyx快速入门1

1.基本说明 EasyX 是针对 C 的图形库,可以帮助 C/C 初学者快速上手图形和游戏编程。 比如,可以基于 EasyX 图形库很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,可以练…

战网国际服加速器用哪个好 暴雪战网好用加速器介绍

战网国际版,又称Battle.net环球版,是暴雪娱乐操盘的全球性游戏互动平台,它跨越地理界限,服务于全球游戏爱好者。与地区限定版本相异,国际版赋予玩家自由进入暴雪旗下众多经典游戏的权利,无论身处何方&#…

【LabVIEW FPGA入门】NI 环境安装教程

注意:安装软件之前关闭杀毒软件,避免安装时损坏,安装完成在使用杀毒软件。 步骤1:判断自己是否需要LabVIEW 编程。 下面这几种情况可以调过安装LabVIEW: 不需要LabVIEW或其他语言编程,直接在MAX或仪器软面板…

java医院信息系统HIS源码SaaS模式Java版云HIS系统 接口技术RESTful API + WebSocket + WebService

java医院信息系统HIS源码SaaS模式Java版云HIS系统 接口技术RESTful API WebSocket WebService 云HIS是基于云计算的医疗卫生信息系统(Cloud-Based Healthcare Information System),它运用云计算、大数据、物联网等新兴信息技术,…

英语学习笔记14——What color‘s your ... ?

What color’s your … ? 你的 …… 是什么颜色的? 词汇 Vocabulary case n. 箱子【封闭的】 相关:box n. 箱子【开口的】    bookcase n. 书架 补充:case n. 案件,案例 口语:It’s a small case.    小意思&…

C语言之旅:自定义类型(联合和枚举)

目录 一.联合体 1.1 联合体的声明 1.2 联合体的使用 1.3 为什么输出 4呢? 1.4 相同成员的结构体和联合体对比 1.5 联合体大小对比 1.6使用联合体判断大小端 二.枚举类型 2.1枚举类型的例举: 2.2枚举类型的优点 2.3 枚举类型的使用 在上篇文章中…

项目管理—需求管理规程(软件研发过程标准,管理标准,标书技术编写,资质评审,安全管理体系,项目交付,实施运维,各类建设方案)

软件资料清单列表部分文档清单:工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求调查单,用户需求说明书,概要设计说明书,技术解…

[智能AI摄像头]RV1126适配3inch mipi屏幕

3寸屏幕 硬件平台 3寸屏:ST7701S驱动芯片,mipi接口,2lane rv1126:易佰纳38板、正点原子rv1126开发板 所需资料 《屏幕规格书》、《开发板原理图》、《屏幕初始化序列》、《ST7701S数据手册》《rk屏幕相关文档》 驱动板绘制 …

大佬复活,暴打空头,两天拉升 180%

GME 暴打空头 大家还记得 2021 年,美国散户大战华尔街的新闻吗? 当时在推特上,几位大佬进行号召,吸引了大量散户往里冲,短短一个月,把一家业绩平平的美股公司「游戏驿站(GME)」拉升了…

[ROS 系列学习教程] 建模与仿真 - URDF 建模实践

ROS 系列学习教程(总目录) 本文目录 一、机器人结构组成二、新建功能包三、编写launch文件四、创建底盘五、添加轮子六、添加其他部件七、解决部分实体位于地面以下的问题 前文介绍了URDF建模与URDF语法,接下来介绍怎么使用URDF从零构建一个机器人模型并在rviz中显示…

半小时搞懂STM32知识点——UART

1.UART 1.1为什么要使用UART这种协议?介绍一下UART及其特点 成本低,硬件简单,数据格式灵活; 低速全双工异步串行通信 1.2 UART数据帧格式? 起始位(1)+数据位(5-8) 校验位…

Sketch总结

sketch禁用了lineGap https://www.sketch.com/docs/designing/text/ http://www.sketchcn.com/sketch-chinese-user-manual.html https://github.com/sketch-hq/sketch-document https://developer.sketch.com/file-format/ https://animaapp.github.io/sketch-web-viewer/ htt…

JAVA云his医院管理系统源码 SaaS模式+融合B/S版电子病历 基于云计算技术开发的云his医院管理系统

JAVA云his医院管理系统源码 SaaS模式融合B/S版电子病历 基于云计算技术开发的云his医院管理系统 定义 美国著名教授Morris.Collen于1988年曾著文为医院信息系统下了如下定义:利用电子计算机和通讯设备,为医院所属各部门提供病人诊疗信息和行政管理信息…

C++二叉搜索树搜索二叉树二叉排序树

C二叉搜索树 1. 二叉搜索树的概念 二叉搜索树(BST,Binary Search Tree),也称为二叉排序树或二叉查找树。它与一般二叉树的区别在于:每个结点必须满足“左孩子大于自己,右孩子小于自己”的规则。在这种规则的约束下,二…

echarts的柱状图使用

1. 柱状图&#xff08;柱体顶部使用外部图片 相关代码 <template><div class"out-bg"><div class"container" ref"warnChartRef"></div></div> </template><script> import * as echarts from echar…

Go微服务: 日志系统ELK核心架构设计

微服务日志系统建设 1 &#xff09;为什么需要日志系统 业务发展越来越庞大&#xff0c;服务器越来越多各种访问日志&#xff0c;应用日志&#xff0c;错误日志量越来越多&#xff0c;无法管理开发人员排查问题&#xff0c;需要到服务器上查日志 2 &#xff09;Elastic Stack…

2024年第十届中西部外语翻译大赛(1)

2024年第十届中西部外语翻译大赛 竞赛信息 “由中西部翻译协会共同体指导发起&#xff0c;各省市译协共建学术指导委员会&#xff0c;2024年第十届中西部外语翻译大赛由中西部翻译协会共同体秘书处&#xff08;武汉公仪网络科技有限公司&#xff09;承办。” - 获奖证书样图 -…

MT3038 植发

思路&#xff1a; 有两个点可以取头发&#xff0c;每个头发寿命不同。 先看点(0,0)&#xff0c;按寿命由小到大排序&#xff08;先考虑寿命短的可以移植到哪里&#xff09;。 (0,0)点头发放置的位置应该让(0,m)点的头发可以尽可能多的放置&#xff08;例如(0,0)点有一根头发…