ES开篇引导

ElasticSearch开篇引导

Elasticsearch

Elasticsearch: 权威指南

结构化数据(能以二维表形式展开的数据信息)

image-20230918211747699

非结构化数据(视频,报表,图片…通常使用nosql数据库存储)

image-20230918211804920

半结构化数据(xml,yml…)

image-20230918212115672

ElasticSearch简介

什么是ElasticSearch

Elasticsearch 是一个开源的分布式搜索和分析引擎,最初由 Elastic 公司开发,用于处理大规模数据的搜索、分析和可视化。它构建在 Apache Lucene 基础之上,提供了强大的全文搜索、实时数据分析和日志存储等功能。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。

Elaticsearch,简称为ES,ES是一个开源的高扩展的分布式全文搜索引擎,是整个ElasticStack技术栈的核心。它可以近乎实时的存储、检索数据:本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。

The Elastic Stack, 包括 Elasticsearch、 Kibana、 Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。

特点和用途

  1. 分布式架构:Elasticsearch 是一个分布式系统,可以水平扩展以处理大规模数据。数据可以分散存储在多个节点上,提供了高可用性和性能。

  2. 全文搜索:Elasticsearch 提供了强大的全文搜索功能,支持各种复杂的查询,如匹配、模糊搜索、多字段搜索、范围搜索等。

  3. 实时数据:它支持实时数据索引和查询,适用于需要实时监控、日志分析、仪表盘等应用场景。

  4. 多种数据类型支持:除了文本数据,Elasticsearch 也可以存储和搜索结构化数据、地理空间数据和时间序列数据等。

  5. 分析和聚合:Elasticsearch 提供了聚合功能,可以对数据进行统计、分组、排序等操作,用于生成数据报告和可视化。

  6. 开源和生态系统:它是开源项目,拥有丰富的插件和生态系统,包括 Kibana(数据可视化工具)、Logstash(日志收集和处理工具)以及 Beats(数据采集器)等工具。

  7. RESTful API:Elasticsearch 使用 RESTful API 进行与应用程序的交互,使其易于集成到各种编程语言和应用中。

  8. 安全性:Elasticsearch 提供了身份验证、授权、加密和审计功能,以确保数据的安全性。

  9. 弹性和可扩展性:Elasticsearch 具有自动恢复能力,可以处理节点故障,并支持动态扩展和缩小集群。

  10. 多种用途:Elasticsearch 可以用于多种用途,包括搜索引擎、日志和事件数据存储、电子商务网站搜索、应用程序性能监控等。

总之,Elasticsearch 是一个功能强大、高度可定制且可扩展的搜索和分析引擎,被广泛用于处理大规模数据、构建实时应用和生成数据洞察。它在各个行业和领域中都有广泛的应用,帮助组织更好地理解和利用其数据资源。

ES 名词核心理念解释

索引(Index)

​ 索引就是一个拥有几分相似特征的文档的集合(类似关系数据库的表)。比如说,你可以有一个客户数据的 索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,可以定义任意多的索引。 能搜索的数据必须索引,这样的好处是可以提高查询速度,比如:新华字典前面的目录 就是索引的意思,目录可以提高查询速度。

Elasticsearch索引的精髓:一切设计都是为了提高搜索的性能。

类型(Type)

​ 在一个索引中,你可以定义一种或多种类型。 一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具 有一组共同字段的文档定义一个类型。不同的版本,类型发生了不同的变化 (在5.x之后就不再支持了,有带你像是2级分类)

版本Type
5.x支持多种 type
6.x只能有一种 type
7.x默认不再支持自定义索引类型(默认类型为:_doc)

文档(Document)

​ 一个文档是一个可被索引的基础信息单元(关系型数据库的条目),也就是一条数据 比如:你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个 订单的一个文档。文档以 JSON(Javascript Object Notation)格式来表示,而 JSON 是一个 到处存在的互联网数据交互格式。 在一个 index/type 里面,你可以存储任意多的文档。

字段(Field)

​ 相当于是数据表的字段,对文档数据根据不同属性进行的分类标识。

映射(Mapping)

​ mapping 是处理数据的方式和规则方面做一些限制(设置字段属性等约束),如:某个字段的数据类型、默认值、 分析器、是否被索引等等。这些都是映射里面可以设置的,其它就是处理 ES 里面数据的一 些使用规则设置也叫做映射,按着最优规则处理数据对性能提高很大,因此才需要建立映射, 并且需要思考如何建立映射才能对性能更好。

type:类型,Elasticsearch 中支持的数据类型非常丰富,说几个关键的:

  • String 类型,又分两种:

    • text:可分词
    • keyword:不可分词,数据会作为完整字段进行匹配
  • Numerical:数值类型,分两类

  • 基本数据类型:long、integer、short、byte、double、float、half_float

  • 浮点数的高精度类型:scaled_float

  • Date:日期类型

  • Array:数组类型

  • Object:对象

分片(Shards)

​ 一个索引可以存储超出单个节点硬件限制的大量数据。比如,一个具有 10 亿文档数据 的索引占据 1TB 的磁盘空间,而任一节点都可能没有这样大的磁盘空间。或者单个节点处 理搜索请求,响应太慢。为了解决这个问题,Elasticsearch 提供了将索引划分成多份的能力, 每一份就称之为分片。当你创建一个索引的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点 上。 分片很重要,主要有两方面的原因:

  1. 允许你水平分割 / 扩展你的内容容量。
  2. 允许你在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量。

​ 至于一个分片怎样分布,它的文档怎样聚合和搜索请求,是完全由 Elasticsearch 管理的, 对于作为用户的你来说,这些都是透明的,无需过分关心。 被混淆的概念是,一个 Lucene 索引我们在 Elasticsearch 称作分片 。 一个 Elasticsearch 索引是分片的集合。 当 Elasticsearch 在索引中搜索的时候, 他发送查询到每一个属于索引的分片(Lucene 索引),然后合并每个分片的结果到一个全局的结果集。

副本(Replicas)

​ 在一个网络 / 云的环境里,失败随时都可能发生,在某个分片/节点不知怎么的就处于 离线状态,或者由于任何原因消失了,这种情况下,有一个故障转移机制是非常有用并且是强烈推荐的。为此目的,Elasticsearch 允许你创建分片的一份或多份拷贝,这些拷贝叫做复 制分片(副本)。 复制分片之所以重要,有两个主要原因:

  • 在分片/节点失败的情况下,提供了高可用性。因为这个原因,注意到复制分片从不与 原/主要(original/primary)分片置于同一节点上是非常重要的。
  • 扩展你的搜索量/吞吐量,因为搜索可以在所有的副本上并行运行。

​ 总之,每个索引可以被分成多个分片。一个索引也可以被复制 0 次(意思是没有复制) 或多次。一旦复制了,每个索引就有了主分片(作为复制源)和复制分片(拷贝的)之别。分片和复制的数量可以在索引创建的时候指定。在索引创建之后,**你可以在任何时候动态地改变复制的数量,但是你事后不能改变分片的数量。**默认情况下, Elasticsearch 中的每个索引被分片 1 个主分片和 1 个复制,这意味着,如果你的集群中至少 有两个节点,你的索引将会有 1 个主分片和另外 1 个复制分片(1 个完全拷贝),这样的话 每个索引总共就有 2 个分片,需要根据索引需要确定分片个数。

分配(Allocation)

将分片分配给某个节点的过程,包括分配主分片或者副本。如果是副本,还包含从主分 片复制数据的过程。这个过程是由 master 节点完成的。

ElasticSearch入门

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值