初探elk @3 之 elasticsearch基本概念

ElasticSearch基本概念

1 . ElasticSearch是面向文档的文档会被序列化成Json,Json对象是由字段组成的,每个字段都有对应的字段类型(如:字符串、数值、日期类型等),可以自己指定此ID,也可以通过ElasticSearch自动生成;
2. 每个索引都有自己的Mapping定义,用来定义所包含的文档的字段名和字段类型 类似数据库 ddl 描述字段的云数据信息 比如 什么类型,分词器等
可以手动指定 也可以动态生成 推荐手动定义

3. 索引指的就是一类文档的集合,每一个文档中都包含有一份元数据

   1)_index:文档所属的索引名;

    2)_type:文档所属的类型名(从7.0开始,每一个索引只能创建一个Type:_doc,在此之前一个索引是可以设置多个Type的);

    3)_id:文档的Unqie Id;

    4)_source:文档的原始Json数据;

    5)_version:文档的版本信息;

    6)_score:文档的相关性算分;

4.集群

ElasticSearch集群实际上是一个分布式系统,而分布式系统需要具备两个特性:

  1)高可用性

    1.1)服务可用性:允许有节点停止服务;

    1.2)数据可用性:部分节点丢失,不会丢失数据;

  2)可扩展性

    随着请求量的不断提升,数据量的不断增长,系统可以将数据分布到其他节点,实现水平扩展;

ElasticSearch的集群通过不同的名字来进行区分,默认名字“elasticsearch”;

可以通过配置文件修改或者命令行修改:-E cluster.name=test


5.节点

  1)节点是什么?

    1.1)节点是一个ElasticSearch的实例,其本质就是一个Java进程;

    1.2)一台机器上可以运行多个ElasticSearch实例,但是建议在生产环境中一台机器上只运行一个ElasticSearch实例;

  2)每个节点都有名字,可以通过配置文件进行配置,也可以通过命令行进行指定,如:-E node.name=node1

  3)每个节点在启动之后,会被分配一个UID,保存在data目录下;

  4)Master-Eligible【有资格、胜任者】 Node与Master Node的说明:

    1)每个节点启动之后,默认就是一个Master Eligible节点,当然可以在配置文件中将其禁止,node.master:false

    2)Master-Eligible Node可以参加选主流程,成为Master Node;

    3)当第一个节点启动时,它会将其选举为Master Node;

    4)每个节点都保存了集群状态,但只有Master Node才能修改集群的状态,包括如下:

      所有的节点信息;

      所有的索引和其相关的Mapping与Setting信息;

      分片的路由信息;

  5)Data Node与Coordinating【协调、整合】 Node的说明:

    1)Data Node:可以保存数据的节点,负责保存分片数据,在数据扩展上起到至关重要的作用;

    2)Coordinating Node:它通过接受Rest Client的请求,会将请求分发到合适的节点,最终将结果汇集到一起,再返回给Client;

      每个节点都默认起到Coordinating Node的职责;

  6)Hot Node(热节点)与Warm Node(冷节点)的说明:

    Hot Node:有更好配置的节点,其有更好的资源配置,如磁盘吞吐、CPU速度;

    Warm Node:资源配置较低的节点;

  7)Machine Learning Node:负责机器学习的节点,常用来做异常检测;

  8)配置节点类型

  每个节点在启动时,会读取elasticsearch.yml配置文件,来确定当前节点扮演什么角色。在生产环境中,应该将节点设置为单一的角色节点,这样可以有更好的性能,更清晰的职责,可 以针对节点的不同给予不能的机器配置。


6、分片

  1)Primary Shard(主分片)

    可以解决数据水平扩展的问题,通过主分片,可以将数据分布到集群内的所有节点之上。

    1.1)一个主分片是一个运行的Lucene的实例;

    注意:一个节点对应一个ES实例;

      一个节点可以有多个index(索引);

      一个index可以有多个shard(分片);

      一个分片是一个lucene index(此处的index是lucene自己的概念,与ES的index不是一回事);

    1.2)主分片数是在索引创建时指定,后续不允许修改,除非Reindex;

  2)Replica Shard(副本)

    可以解决数据高可用的问题,它是主分片的拷贝。

    2.1)副本分片数可以动态调整;

    2.2)增加副本数,在一定程度上可以提高服务的可用性;

  3)分片的设定

  对于生产环境中分片的设定,需要提前做好容量规划,因为主分片数是在索引创建时预先设定的,后续无法修改。

    3.1)分片数设置过小

      导致后续无法增加节点进行水平扩展。

      导致分片的数据量太大,数据在重新分配时耗时;

    3.2)分片数设置过大

      影响搜索结果的相关性打分,影响统计结果的准确性;

      单个节点上过多的分片,会导致资源浪费,同时也会影响性能;

7、ElasticSearch健康状况的查看

1)Green:主分片与副本都正常分配;

  2)Yellow:主分片全部正常分配,有副本分片未能正常分配;

  3)Red:有主分片未能分配;

posted @ 2019-07-16 18:24  川流不息&  阅读(158)  评论(0编辑  收藏  举报