ElasticSearch 小白入门

ElasticSearch 小白入门

1.数据概述

1.1 数据类型

 数据分为结构化数据和非结构化数据。结构化数据指的是长度固定或格式固定,例如数据库等。一般存储在Mysql或Oracle中,可通过建立索引实现快速的查询;非结构化数据指的是全文数据,长度和格式都不固定,例如文档等。一般通过顺序扫描或全文搜索实现数据的查询。

1.2 数据搜索技术

1.2.1 顺序扫描

根据给定的查询条件,依次遍历所有的数据,将符合条件的数据筛选出来。但在大数据量的情况下,效率非常低

1.2.2 全文搜索

为了解决顺序扫描的效率低问题,考虑从非结构化数据中提取一些字段信息,作为整体数据的简要说明,类似于文章标签和关键词这种,提取出的字段信息就变成了结构化数据,作为原始数据的索引,从而提高查询的速度。

1.2.3 全文搜索引擎

 全文搜索引擎是全文搜索技术的具体实现。基本原理:通过扫描索引中的每一个字段数据,对字段数据进行分词,形成词条,记录每个词条在字段数据中出现的次数和位置。当用户检索时,可通过词条索引快速查数据。例如:每本书籍都会有目录,目录就是索引,通过目录可快速定位到查找的地方。常见搜索引擎:Lucene, Elastic Search以及Solr。

1.3 数据库和全文搜索引擎的讨论

疑问:为什么有了Mysql等类型的数据库做全文搜索?

主要基于几个方面的考虑:

  1. 数据类型。ES可以更好的支持非结构化数据的存储和查询;
  2. 搜索性能。数据量达到千万级别后,使用Mysql存储查询文本数据的话,会查询全部数据,内存和时间消耗非常大。例如:查询name中包含‘he’的字段,Mysql存储引擎会查询全部的数据。
  3. 搜索灵活度。比如搜索过程中能够提示相似度搜索
  4. 索引维护。Mysql存储文本的话,一方面SQL索引的优化收效甚微,另一方面insert和update会造成索引的整体更新。

全文搜索的适用场景

  1. 搜索对象是大量非结构Text数据;
  2. 整体数据量达到百万及以上;
  3. 搜索灵活度高

1.4 Elastic Search和Solr对比

 Lucene是一个Java全文搜索引擎,提供搜索代码库和API,但不是完整的应用程序。Solr和ES是在Luence基础上构建的交互友好以及高级功能的全文搜索引擎。

区别

  • 分布式能力:ES自带分布式协调管理功能; Solr使用Zookeeper实现分布式管理;
  • 搜索格式:ES仅支持Json格式; Solr支持Json, Xml以及Csv;
  • 社区活跃度:Solr相对比较成熟;ES发展速度快;
  • 查询性能:
    1. ES在实时搜索场景下,查询速度更快,更加适合实时搜索场景,比如日志查询,监控指标分析以及推荐系统等。
    2. Solr在普通场景下,查询速度更快, 但出现索引更新时查询速度慢。适合传统搜索应用场景,比如电子商务、内容管理、数据聚合等需要强大的搜索和聚合功能的场景。

补充:实时搜索指的是索引刚建立或更更新完,就进行查询。由于Solr建立索引时会产生IO阻塞,此时查询性能比较差

2.ES基础概念

名词名称名词含义Mysql中的名词
索引Index存储文本数据的地方类似于数据库
类型Type一类数据集合的总称。ES7移除了Type的概念类似于表
映射Mapping定义了每个字段的类型信息类似于数据库中的表结构
文档Document一行记录类似于表中的一条数据
字段Field数据字段类似于表中的字段
集群Cluster一个或多个节点组成,一个集群默认有一个默认名称"elasticsearch"暂无
节点Node集群中的节点, 一台机器或一个进程暂无
分片和副本Shard见图片暂无

分片和副本之间的联系

索引数据存储架构.png
 分片指的是一个独立索引,包含一个完整的数据子集,主要为了实现数据的分布式存储和处理,以提高性能和可扩展性。分为主分片和副本分片,主分片负责索引搜索和写请求;副本分片是主分片的完全复制,负责数据的读请求,用于提供数据的冗余和高可用性。一方面实现读写分离,另一方面主分片出现故障时,副本分片自动升级为主分片,实现故障的自动转移,提高高可用性。

3.ES创建和搜索整体流程

在这里插入图片描述

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Elasticsearch是一款非常强大的开源搜索引擎,它可以帮助我们从海量数据中快速找到需要的内容。它是elastic stack(ELK)的核心组件之一,结合kibana、Logstash、Beats等工具,被广泛应用在日志数据分析、实时监控等领域。\[1\] 在Elasticsearch中,为了提高搜索的性能,它使用了倒排索引的概念。倒排索引是指将文档中的每个词都建立索引,然后通过这些索引来快速定位到包含该词的文档。当我们向Elasticsearch插入一条记录时,它会将记录中的字段建立倒排索引,以便能够快速搜索和检索数据。\[2\] 为了能够快速找到某个词,Elasticsearch使用了Term Dictionary。Term Dictionary将所有的词进行排序,并使用二分法查找词,类似于我们在学校时老师教我们使用字典的方式。这种查询方式类似于传统关系型数据库的B-Tree索引方式,但并不是Elasticsearch快速的原因。\[3\] 以上是elasticsearch的快速入门介绍。 #### 引用[.reference_title] - *1* [Elasticsearch快速入门](https://blog.csdn.net/ks_1998/article/details/121237513)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【ElasticSearchElasticSearch 快速入门(精讲)](https://blog.csdn.net/m0_45067620/article/details/120377816)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桃花猿

客官,赏点打酒钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值