温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Elasticsearch的基本概念是什么呢

发布时间:2021-12-16 17:10:27 来源:亿速云 阅读:113 作者:柒染 栏目:大数据

本篇文章给大家分享的是有关Elasticsearch的基本概念是什么呢,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

以 Elasticsearch 7.9.2 为准。

文档和索引面向开发者,是逻辑概念;节点、分片、集群面向运维,是物理概念。

文档

一个文档理解为一个 JSON 对象即可。文档是 ES 中存储、搜索的最小单位。

文档均有自己的 id,形式为一个整数,可以自己指定,也可以由 ES 生成。

文档的常见样子:

{
    "_index": "myindex",
    "_type": "doc", // es7 开始,这里必须是 doc
    "_id": "YmYJdj888",
    "_score": 0.2876333,
    "_source": {
        "foo": "astr",
        "bar": "bstr",
        "biz": [
            "book", "cat"
        ]
    }
}

其中,_source 字段保存文档原始内容,其他字段为文档元数据。

_index 表示它属于那个索引,_id 表示文档的 id。其他字段后面再说。

索引

所以是文档和集合。类似于关系型数据库中的表。

一词多义,索引:

  • (ES 中)名词,表示文档的集合

  • (ES 中)动词,表示将文档放入 ES (例:将某文档索引到 ES 中)

  • (抛开 ES)名词,表示查找标记(例:这个数据库用 B+ 树实现索引)

索引中的文档被分散在分片(shard)上。

节点

一个 ES 节点指的是一个 ES 程序运行实例,其实就是个 Java 进程。

生产环境中,一台机器只运行一个实例。

每一个节点都有名字,通过配置文件指定,或在启动时加参数

-E node.name=foo

节点启动后,会分配 UID,保存于 data 目录下。

集群

ES 是分布式软件,不同角色的节点组成集群,以提供如下特性:

可用性:

  • 服务可用:允许少数节点不可用

  • 数据可用:损坏少数节点时数据不丢失

可扩展:可以不断增加机器。

集群:

不同集群通过名字区分,默认的集群名为 elasticsearch。集群名通过配置文件指定或在命令行中 -E cluster.name=myc 指定。集群中有 >= 1 个节点。

集群中节点的角色:

  • master eligible:可被选举为 master。master 主要负责索引的创建和删除,决定分片分到哪里,维护和更新集群的状态。

  • data:存放数据。

  • ingest:数据进来之前进行过滤。

  • 协调者(coordinating):与客户端打交道的节点。客户端的请求都是先到协调者这里,再由协调者在后面忙活,然后把结果返回给客户端。

  • 机器学习:负责机器学习。需要开启 X-Pack 插件。

节点角色参数默认值
master eligiblenode.mastertrue
datanode.datatrue
ingestnode.ingesttrue
协调者不涉及
机器学习node.mltrue

任何节点都一定是协调者,如果要把某节点设置为只充当协调者,则只需且必须把其他的 4 个参数都设为 false。

生产环境中,每个节点应该只充当一个角色。如果数据量小,酌情让部分节点兼职。

生产环境中,应该只对外保留协调者的地址。

分片与副本

索引有 >=1 个分片,每个分片有 1 个主分片和 >=0 个副本分片。

例如,对于索引 myindex,分片数设为 3,副本数设为 1,则总数据片个数为 3*(1+1)=6。一般的,某索引分片数为 n,副本数为 m,则总数据片个数为 n(m+1)。

一个文档放到某索引后,文档会被放入某个主分片和这个主分片对应的所有副本分片。主分片及其对应的副本分片必须在互不相同的节点上,但主分片之间不必如此。

例如,索引 myindex,分片数设为 3,副本数设为 1。3 个主分片记为 P0、P1、P2,对应的副本分片记为 R0,R1,R2。给 3 台机器,则数据片的分布可能为:

(P0 R2) (P1 R0) (P2 R1),

如果只给 2 台机器,则则数据片的分布可能为:

(P0 P1 R2) (P2 R0 R1),

如果只给 1 台机器,则则数据片的分布可能为:

(P0 P1 P2),

此时,ES 无法创建副本分片,此时集群可用但非高可用。

索引的分片数设定后不可修改,如果需要修改必须重新建索引。副本数可以动态调整。

适当增加分片数可以避免单个数据片过大,也增加了对机器的可伸缩性。适当增加副本数可以提高性能和吞吐量。

以上就是Elasticsearch的基本概念是什么呢,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI