ElasticSearch 7.x 入门与实战

为了让项目的性能更好,检索的效率更高,考虑引入elasticsearch中间件。

我们的服务器环境为centos7,综合版本考虑,springboot的插件与服务器中都装7.x版本的

比较新,也比较多特性支持。


ElasticSearch简介

ElasticSearch是一个开源的分布式搜索引擎,它使用Lucene作为底层引擎,提供了分布式多租户全文搜索、实时数据分析和可视化等功能。其主要优势包括:

  1. 高性能:ElasticSearch采用分布式架构,可以快速处理大量数据,支持实时搜索和分析。 
  2. 可扩展性:ElasticSearch支持水平扩展,可以通过添加新的节点来扩展集群,实现高可用和负载均衡。 
  3. 灵活性:ElasticSearch提供了丰富的API接口,可以方便地进行数据索引、搜索和分析等操作,同时也支持自定义插件和扩展。 
  4. 易用性:ElasticSearch提供了友好的Web界面和命令行工具,可以方便地进行管理和监控。 

底层实现原理主要包括:

  1. 分片存储:ElasticSearch将数据分成多个片段进行存储和索引,每个片段可以独立管理和查询,提高了搜索效率和可扩展性。 
  2. 倒排索引:ElasticSearch使用Lucene的倒排索引技术,将文档中的每个词都建立一个索引表,可以快速定位包含该词的文档。 
  3. 分布式搜索:ElasticSearch采用分布式搜索技术,将查询请求发送到所有节点进行处理,然后将结果合并返回给客户端。 

ElasticSearch可以用在很多地方,包括:

  1. 搜索引擎:ElasticSearch可以作为企业内部搜索引擎或者网站搜索引擎,提供高效的全文搜索功能。 
  2. 数据分析:ElasticSearch可以用于实时数据分析和可视化,支持聚合、过滤和排序等操作。 
  3. 日志管理:ElasticSearch可以用于日志管理和监控,支持实时索引和搜索。 
  4. 地理空间搜索:ElasticSearch支持地理空间搜索,可以用于位置数据的搜索和分析。

 Elasticsearch底层有什么重要的模块?每个模块的职责或者其底层的实现是怎么样的?你能用中文或者英文进行较为完善的解答吗?

这个问题是笔者在蚂蚁一面时被问道的问题,这里进行一个复盘。

Elasticsearch底层架构主要包括以下几个模块³:

  • 索引模块:负责索引的创建、删除、更新等操作。
  • 搜索模块:负责搜索请求的处理,包括查询解析、查询优化、分布式查询等。
  • 存储模块:负责数据的存储和检索,包括文档的增删改查、数据的压缩和解压缩等。
  • 分析模块:负责对文本进行分词、过滤、归一化等操作,以便于后续的搜索和聚合。
  • 映射模块:负责定义文档的结构和属性,包括字段类型、分词器、过滤器等。

每个模块的职责如下:

  • 索引模块:负责管理索引,包括创建、删除、更新索引等操作。索引是Elasticsearch中最基本的数据单元,它由多个分片组成,每个分片可以在不同的节点上存储。索引模块还负责管理分片的分配和迁移。
  • 搜索模块:负责处理搜索请求,包括查询解析、查询优化、分布式查询等。查询解析将用户输入的查询语句转换为内部查询结构,查询优化会对查询进行优化以提高搜索效率,分布式查询会将查询请求发送到所有节点进行处理,并将结果合并返回给客户端。
  • 存储模块:负责数据的存储和检索,包括文档的增删改查、数据的压缩和解压缩等。Elasticsearch使用倒排索引来实现数据的快速检索,每个分片都有自己的倒排索引。存储模块还负责管理文档的版本控制和冲突检测。
  • 分析模块:负责对文本进行分词、过滤、归一化等操作,以便于后续的搜索和聚合。Elasticsearch提供了多种内置的分词器和过滤器,同时也支持自定义分词器和过滤器。
  • 映射模块:负责定义文档的结构和属性,包括字段类型、分词器、过滤器等。映射是一个JSON对象,它描述了文档中每个字段的类型和属性。映射还可以定义字段别名、动态映射等。

(1) Elasticsearch 底层数据结构 - TechLee - 博客园. https://www.cnblogs.com/tech-lee/p/15225276.html 访问时间 2023/4/11.
(2) 分布式搜索引擎Elasticsearch的架构分析 - 知乎. https://zhuanlan.zhihu.com/p/334348919 访问时间 2023/4/11.
(3) 一篇搞懂ElasticSearch(附学习脑图) - 掘金. https://juejin.cn/post/700959379

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值