ElasticSearch 系列:入门

简介

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。

ElasticSearch 应用场景

  • 海量数据分析引擎
  • 站内搜索引擎
  • 数据仓库
  • 基本概念

Elasticsearch 是一个分布式文档存储。Elasticsearch 不是将信息存储为列状数据的行,而是存储已序列化为 JSON 文档的复杂数据结构。当集群中有多个 Elasticsearch 节点时,存储的文档分布在整个集群中,并且可以从任何节点立即访问。

存储文档后,它会被编入索引,并且可以近乎实时地进行全面搜索——在1 秒内。Elasticsearch 使用一种称为倒排索引的数据结构,它支持非常快速的全文搜索。倒排索引列出出现在任何文档中的每个唯一单词,并标识每个单词出现在的所有文档。

文档和索引

文档

Elasticsearch是面向文档的,也就是说文档是所有可搜索数据的最小单元。ES的文档就像MySql中的一条记录,只是ES的文档会被序列化成json格式,保存在Elasticsearch中;

索引

索引可以被认为是文档的优化集合,每个文档都是字段的集合,这些字段是包含数据的键值对。默认情况下,Elasticsearch 索引每个字段中的所有数据,每个索引字段都有一个专用的、优化的数据结构。例如,文本字段存储在倒排索引中,数值和地理字段存储在 BKD 树中。使用每个字段的数据结构来组合和返回搜索结果的能力使 Elasticsearch 如此之快。

#特点

  • 索引就相当于MySql里的数据库,它是具有某种相似特性的文档集合。反过来说不同特性的文档一般都放在不同的索引里;
  • 索引的名称必须全部是小写;
  • 在单个集群中,可以定义任意多个索引;
  • 索引具有mapping和setting的概念,mapping用来定义文档字段的类型,setting用来定义不同数据的分布:比如分片数量,副本数量

ES和mysql相关的基本概念的对比

ESMySQL
字段
文档一行数据
索引数据库

可扩展性和弹性:集群、节点和分片

集群

  • 一个集群就是由一个或者多个节点组成的,这些节点具有相同的名字,也就是节点的名字。在集群中有一个节点会被选举成为master,它用来管理整个集群的改变,比如创建/删除index,增加或者删除节点。任何节点都可以选举成为master。
    • 正常来说任何时候都只有一个master存在

节点

一个节点就是一个ES实例,其实本质上就是一个java进程;
节点的名称可以通过配置文件配置,或者在启动的时候使用-E node.name=ropledata指定,默认是随机分配的。建议咱们自己指定,因为节点名称对于管理目的很重要,咱们可以通过节点名称确定网络中的哪些服务器对应于ES集群中的哪些节点;

ES的节点类型主要分为如下几种:

  • Master Eligible节点:每个节点启动后,默认就是Master Eligible节点,可以通过设置node.master: false 来禁止。Master Eligible可以参加选主流程,并成为Master节点(当第一个节点启动后,它会将自己选为Master节点);

    • 注意:每个节点都保存了集群的态,只有Master节点才能修改集群的状态信息。
  • Data节点:可以保存数据的节点。主要负责保存分片数据,利于数据扩展。

  • Coordinating 节点:负责接收客户端请求,将请求发送到合适的节点,最终把结果汇集到一起。

  • 注意:每个节点默认都起到了Coordinating node的职责。一般在开发环境中一个节点可以承担多个角色,但是在生产环境中,还是设置单一的角色比较好,因为有助于提高性能。

分片

ES里面的索引可能存储大量数据,这些数据可能会超出单个节点的硬件限制。

为了解决这个问题,ES提供了将索引细分为多个碎片的功能,这就是分片。这里咱们可以简单去理解,在创建索引时,只需要咱们定义所需的碎片数量就可以了,其实每个分片都可以看作是一个完全功能性和独立的索引,可以托管在集群中的任何节点上。

  • 分片的大小建议在:20GB 到 40GB

基本架构

在这里插入图片描述

  • Master节点用于管理和控制Elasticsearch集群,并负责在集群范围内创建删除索引,跟踪哪些节点是集群的一部分,并将分片分配给这些节点。主节点一次处理一个集群状态,并将状态广播到所有其他节点,这些节点需要响应并确认主节点的信息。
  • Node节点保存数据并执行与数据相关的操作,如CRUD、搜索和聚合,所有节点也都默认为coordinating node,负责接收客户端请求,将请求发送到合适的节点,最终把结果汇集到一起。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CoLiuRs

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值