没有合适的资源?快使用搜索试试~ 我知道了~
首页十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统.pdf
十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统.pdf
5星 · 超过95%的资源 需积分: 50 66 下载量 75 浏览量
更新于2023-03-03
评论 4
收藏 400KB PDF 举报
十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统。 什么是elasticsearch Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能。 大名鼎鼎的Lucene 搜索引擎被广泛用于搜索领域,但是操作复杂繁琐,总是让开发者敬而远之。而 Elasticsearch将 Lucene 作为其核心来实现所有索引和搜索的功能,通过简单的 RESTful 语法来隐藏掉 Lucene 的复杂性,从而让全文搜索变得简单 ES在Lucene基础上,提供了一些分布式的实现:集群,分片,复制等。 搜索为什么不用MySQL而用es 我们本文案例是一个迷你商品搜索系统,为什么不考虑使用MySQL来实现搜索功能呢?原因如下: MySQL默认使用innodb引擎,底层采用b+树的方式来实现,而Es底层使用倒排索引的方式实现,使用倒排索引支持各种维度的分词,可以掌控不同粒度的搜索需求。(MYSQL8版本也支持了全文检索,使用倒排索引实现,有兴趣可以去看看两者的差别) 如果使用MySQL的%key%的模糊匹配来与es的搜索进行比较,在8万数据量时他们的耗时已经达到40:1左右,毫无疑问在速度方面es完胜。
资源详情
资源评论
资源推荐
什么是 elasticsearch
Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能。
大名鼎鼎的 Lucene 搜索引擎被广泛用于搜索领域,但是操作复杂繁琐,总是让开发者敬而远之。而
Elasticsearch 将 Lucene 作为其核心来实现所有索引和搜索的功能,通过简单的 RESTful 语法来
隐藏掉 Lucene 的复杂性,从而让全文搜索变得简单
ES 在 Lucene 基础上,提供了一些分布式的实现:集群,分片,复制等。
搜索为什么不用 MySQL 而用 es
我们本文案例是一个迷你商品搜索系统,为什么不考虑使用 MySQL 来实现搜索功能呢?原因如下:
MySQL 默认使用 innodb 引擎,底层采用 b+树的方式来实现,而 Es 底层使用倒排索引的
方式实现,使用倒排索引支持各种维度的分词,可以掌控不同粒度的搜索需求。(MYSQL8 版本也
支持了全文检索,使用倒排索引实现,有兴趣可以去看看两者的差别)
如果使用 MySQL 的%key%的模糊匹配来与 es 的搜索进行比较,在 8 万数据量时他们的耗
时已经达到 40:1 左右,毫无疑问在速度方面 es 完胜。
es 在大厂中的应用情况
es 运用最广泛的是 elk 组合来对日志进行搜索分析
58 安全部门、京东订单中心几乎全采用 es 来完成相关信息的存储与检索
es 在 tob 的项目中也用于各种检索与分析
在 c 端产品中,企业通常自己基于 Lucene 封装自己的搜索系统,为了适配公司营销战略、
推荐系统等会有更多定制化的搜索需求
es 客户端选型
spring-boot-starter-data-elasticsearch
我相信你看到的网上各类公开课视频或者小项目均推荐使用这款 springboot 整合过的 es 客户端,
但是我们要 say no!
此图是引入的最新版本的依赖,我们可以看到它所使用的 es-high-client 也为 6.8.7,而 es7.x 版本
都已经更新很久了,这里许多新特性都无法使用,所以版本滞后是他最大的问题。而且它的底层也是
highclient,我们操作 highclient 可以更灵活。我呆过的两个公司均未采用此客户端。
elasticsearch-rest-high-level-client
这是官方推荐的客户端,支持最新的 es,其实使用起来也很便利,因为是官方推荐所以在特性的操
作上肯定优于前者。而且该客户端与 TransportClient 不同,不存在并发瓶颈的问题,官方首推,必
为精品!
搭建自己的迷你搜索系统
引入 es 相关依赖,除此之外需引入 springboot-web 依赖、jackson 依赖以及 lombok 依赖等。
<properties>
<es.version>7.3.2</es.version>
</properties>
<!-- high client-->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>${es.version}</version>
<exclusions>
<exclusion>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>${es.version}</version>
</dependency>
<!--rest low client high client 以来低版本 client 所以需要引入-->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>${es.version}</version>
</dependency>
es 配置文件 es-config.properties
es.host=localhost
es.port=9200
es.token=es-token
剩余10页未读,继续阅读
代码讲故事
- 粉丝: 2w+
- 资源: 59
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论5