Elasticsearch的基本概念是什么呢

本篇文章给大家分享的是有关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 eligible node.master true
data node.data true
ingest node.ingest true
协调者 不涉及
机器学习 node.ml true

任何节点都一定是协调者,如果要把某节点设置为只充当协调者,则只需且必须把其他的 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的基本概念是什么呢,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

原创文章,作者:506227337,如若转载,请注明出处:https://blog.ytso.com/223103.html

(0)
上一篇 2022年1月6日
下一篇 2022年1月6日

相关推荐

发表回复

登录后才能评论