美文网首页
ES的一些基本概念

ES的一些基本概念

作者: 鸿雁长飞光不度 | 来源:发表于2020-02-01 01:12 被阅读0次

1.文档 (document )

  • ES是面向文档的,文档是所有数据可搜索数据的最小单位,类似数据表里面的一条记录。下面的例子都是文档。
    • 日志文件的日志项
    • 一篇PDF文档的具体内容
  • 文档会被序列化为JSON格式,保存在ES里面。
    • JSON对象由字段组成。
    • 每个字段都有具体的类型,如字符串,数值,布尔,日期,范围类型。字段的类型,可以自己指定,也可以由ES自动推算出来。数据支持数组,支持嵌套。
  • 每个文档都有一个唯一的id
    • 可以自己指定
    • 也可以由ES生成

1.1 文档的元数据

用于标注文档的相关信息

  • _index:文档所属的索引
  • _type: 文档所属的类型名,7.0之后只能有一个type,_doc
  • _id:文档的唯一id
  • _source:文档的原始json数据
  • _all:整合所有内容到该字段
  • _version:文档的版本信息
  • _score:相关性打分。

2.索引(index)

  • 类相似文档的集合,是一类文档的集合, 索引体现了逻辑的概念。
  • shard(分片)是物理空间的概念,索引里面的数据分散放在shard的上面。
  • 索引的mapping,用于定义文档的字段和类型。
  • 索引的setting,用于定义数据的分布。
  • 索引和关系型数据库的对比
RDBMS ES
table(表) index(索引)
row (一条记录) document(文档)
column (列) field(一个字段)
schema(创建语句) Mapping(字段和类型定义配置)
sql (查询语言) DSL(查询语言)
支持事务,JOIN操作 查询,搜索,评分关联计算。

3.分布式系统的可用性与扩展性

  • 高可用性
    • 服务可用性,允许有节点停止服务
    • 数据可用性 - 部分节点丢失,不会丢失数据
  • 可扩展性
    • 请求量提升/数据的不断增长的时候将数据分布到不同的节点上。

ES的分布式架构

  • 不同的集群通过不同的名字区分,默认名字『elasticsearch』
  • 通过修改配置文件,或者在命令运行 -E cluster.name=xxx进行设定
  • 一个集群可以有多个节点。

4. 节点

  • 一个ES的实例
    • 是一个java进程
    • 一台机器上可以运行多个ES,但是生成环境一个机器上最好只运行一个。
  • 节点有自己的名字,可以修改配置文件或者启动的时候 -E node.name=xxx指定
  • 每一个节点启动后,会分配一个UID,保存在data目录下。

4.1 Master-eligible Node和Master Node

  • 每个节点启动后,默认就是Master-eligible节点
    • 可以设置node.master:false禁止
  • Master-eligible节点可以参选主流程,成为Master节点。
  • 当第一个节点启动的时候,会将自己选举成为Master节点,只有Master节点才能修改集群状态信息
    • 集群状态指的是维护一个集群必要的信息,比如所有节点的信息,所有的索引和其相关的mapping和settting设置, 分配的路由信息。
  • 这样的设定是为了避免信息导致数据的不一致性。

4.2 data node和coordinating node

data node:保存数据,负责保存分配数据,对数据扩展起到非常强大的作用。
coordinating node:负责接收客户端请求,将请求分发到合适节点,最终汇总结果。每一个节点默认都起到 coordinating node这个作用。

4.3其他节点

  • Hot & Warm Node:不同硬件配置node,用来实现冷热架构,降低集群的部署成本。
  • Machine Learning Node:负责跑机器学习的Job,做异常检测处理,

4.4 配置节点的类型

  • 开发环境一个节点可承担多个角色
  • 生成环境中,应该设置单一的角色节点。
节点类型 配置参数 默认值
master eligible node.master true
data node.data true
ingest node.ingest true
coordinating only 默认是开启,需要仅仅启动,把其他的全部设置为false
machine learning node.ml true (enable x-pack)

5分片

  • 主分片(Primary Shard)解决数据水平扩展的问题,通过主分片,将数据分布到集群内的所有节点上面。
    • 一个分片是一个运行的Lucene的实例
    • 主分片数在索引创建的时候指定,以后不可以改,除非重新索引。
  • 副本分片(Replica Shard),解决数据的高可用问题,是主分片的拷贝。
    • 副本分配数,可以动态的调整。
    • 增加副本数,可以提高读取的吞吐量,提高服务可用性。

5.1分配的设定

生产环境提前做好容量规划

  • 分片数设置过小
    • 后续无法增加节点实现水平扩展
    • 单个分片数据量过大,数据重新分配耗时。
  • 分片数设置过大,(7.0默认主分片设置为1,解决了over-shading问题)
    • 影响搜索结果的相关性打分,影响统计结果的准确性。
    • 单个节点上过多的分配,导致资源浪费,影响性能。

5.2查看集群状况

GET _cluster/health
  • Green:主分片和副本都正常工作。
  • Yellow:主分片全部正常,有副本分配未这个词分配
  • Red:有主分片未能分配。(磁盘量不足的时候创建索引)
settting.png

相关文章

  • Elasticsearch Java API的基本使用

    说明 在明确了ES的基本概念和使用方法后,我们来学习如何使用ES的Java API.本文假设你已经对ES的基本概念...

  • 引用丨Array类型

    2、Array类型   数组基本概念   ES3   ES5    

  • Elasticsearch 入门学习

    基本概念 ES有些核心基本概念需要先理解,对后续的学习有帮助 1.Near Realtime(NRT):ES是近似...

  • ES的一些基本概念

    1.文档 (document ) ES是面向文档的,文档是所有数据可搜索数据的最小单位,类似数据表里面的一条记录。...

  • Elasticsearch 环境搭建

    上一篇我们对 ES 的一些基本概念做了介绍,接下来我们搭建使用 ES 需要的环境。由于条件有限,这里先使用 win...

  • 关于ES、PES、PS以及TS码流

    一、基本概念 **1)ES ** ES--Elementary Streams (原始流)是直接从编码器出来...

  • ElasticSeach

    ES基本概念(ES是非关系型数据库) Index(索引-数据库): ES 数据管理的顶层单位就叫做 Index(索...

  • ES集群原理与搭建

    一、ES集群原理 查看集群健康状况:URL+ /GET _cat/health (1)、ES基本概念名词 Clus...

  • 音视频学习基础篇3-关于ES,PES,TS/PS码流的概念

    一、基本概念 1)ES ES--Elementary Streams (原始流)是直接从编码器出来的数据流,可以是...

  • Elasticsearch的简单概念和使用

    Elasticsearch简称es,是能实现海量数据的快速搜索的分布式引擎。 基本概念 es存储的结构可以分为in...

网友评论

      本文标题:ES的一些基本概念

      本文链接:https://www.haomeiwen.com/subject/rwjpthtx.html