Elasticsearch相关概念

目录

 

文档

Elasticsearch是面向文档的,文档是所有可搜索数据的最小单位

文档会被序列化成json格式,保存在Elasticsearch中

每个文档有一个Unique ID

JSON文档

文档中的元数据

索引

索引是文档的容器,是一类文档的结合

索引的Mapping与Settings

索引的不同语义

Type

REST API

实例:索引相关的api

分布式系统

高可用性

可扩展性

好处:

es的分布式架构:

节点

概述

Master 节点

Master-eligible节点

Data节点

协调节点

Hot / Warm节点

配置节点类型:

分片

主分片(Primary Shard)

副本(Replica Shard)

分片的设定

实例

集群的健康状态

集群状态信息

与关系数据库类比

http方法

常见错误返回


文档

Elasticsearch是面向文档的,文档是所有可搜索数据的最小单位

<1>日志文件中的日志项

<2>一部电影的具体信息

文档会被序列化成json格式,保存在Elasticsearch中

<1>json对象由字段组成

<2>每个字段有对应的字段类型(字符串,布尔,日期,二进制)

每个文档有一个Unique ID

<1>可以自己指定

<2>也可以通过Elasticsearch自动生成

JSON文档

<1>一篇文档包含了一系列的字段,类似数据库表中的一条记录

<2>JSON文档,格式灵活,不需要预先定义格式,支持数组/嵌套

文档中的元数据

当有大量并发时,版本信息可以很好的解决文档冲突问题

 

索引

索引是文档的容器,是一类文档的结合

<1>索引体现了逻辑空间的概念,每个索引都有自己的Mapping定义,用于定义包含的文档字段名和字段类型

<2>分片体现了物理空间的概念,索引中的数据分散在分片上

索引的Mapping与Settings

<1>Mapping定义文档字段的类型

<2>Settings定义不同的数据分布

索引的不同语义

 

Type

REST API

为了方便其他语言的整合,es提供了rest api来给其他程序进行调用,当程序需要与es集成时,只需要发出http请求就行

实例:索引相关的api

<1>创建索引:默认配置

<2>创建索引:定义配置(分片数及副本数)

<3>创建索引:定义映射

 

<4>删除索引

<5>获取索引

<6>检测索引是否存在

<7>关闭索引

<8>打开索引

 

分布式系统

高可用性

<1>服务可用性:允许有节点停止服务

<2>数据可用性:部分节点丢失,不会丢失数据

可扩展性

数据不断增加(系统有能力将数据分布到所有节点上,实现水平扩展)

 

好处:

<1>存储的水平扩容

<2>提高系统的可用性,部分节点停止服务,整个集群的服务不受影响

 

es的分布式架构:

<1>不同的集群通过不同的名字来区分,默认是'elasticsearch'

<2>通过配置文件修改,或者在命令行中 -E cluster.name=test 指定

<3>一个集群可以有一个或者多个节点

 

节点

概述

<1>节点是一个es的实例

  • 本质上是一个java进程
  • 一台机器可以运行多个es进程,但生产环境建议一台机器只运行一台

<2>每个节点都有名字,通过配置文件修改,或者在命令行中 -E node.name=node1 指定

<3>每个节点启动后,会分配一个uuid,保存在data目录下

Master 节点

Master-eligible节点

<1>每个节点启动后,默认是一个Master-eligible节点(可以设置node.master:false禁止)

<2>Master-eligible节点可以参选主流程,成为master节点

<3>当第一个节点启动的时候,他会将自己选举成master节点

<4>每个节点都保存了集群状态,只有master节点能修改集群状态(集群状态,维护了一个集群中必要的信息,任意节点都能修改信息则会导致数据的不一致性)

Data节点

(协调节点)

<1>负责接收client的请求,将请求发送到合适的节点,最终把结果汇总到一起

<2>每个节点都起到了coordinating节点的作用

Hot / Warm节点

<1>不同硬件配置的数据节点,用来实现Hot Warm架构,降低集群部署的成本

<2>热节点是配置比较高的节点,它可以有更好cpu,更好的磁盘吞吐量,冷节点存储一些比较旧的节点,这些机器的配置也会比较低,通过冷热节点,可以在硬件上节省很多费用

配置节点类型:

<1>开发环境中一个节点可以承担多种角色

<2>生产环境中,应该设置单一的角色节点。因为每个节点配置不同的角色,这样会有更好的性能,且职责非常明确,能为其做对应的硬件配置

 

分片

将索引划分为多份的能力,允许水平分割和扩展容量,多个分片响应请求,提高性能和吞吐量(分片之间有路由关系)

主分片(Primary Shard)

用于解决数据水平扩展的问题,通过主分片,可以将数据分布到集群中的所有节点上,实现数据的水平扩展

<1>一个分片是一个运行的lucene实例

<2>主分片在索引创建时指定,后续不允许更改,除非Reindex。(一旦数据增长很快,超过了磁盘空间的时候,要重建索引)

副本(Replica Shard)

创建分片的一份或者多份的能力,在一个节点失败其余节点可以顶上。用于解决数据高可用的问题,是主分片的拷贝

<1>副分片数,可以动态的调整

<2>增加副本数,可以在一定程度上提高服务的可用性(读取的吞吐)

 

分片的设定

对于生产环境中分片的设定,需要提前做好容量规划

7.0开始,默认主分片数是1,解决了over-sharding的问题

<1>分片数设置过小:

  • 导致后续无法增加节点实现水平扩展
  • 单个分片数据量太大,导致数据重新分配耗时

<2>分片数设置过大

  • 影响搜索结果的相关性打分,影响统计结果的准确性
  • 单个节点上过多的分片,会导致资源浪费,同时会影响性能

实例

主分片分散在三个节点上,当某个节点发生故障时,es内部会产生故障转移机制

集群的健康状态

 

集群状态信息

 

 

与关系数据库类比

 

关系数据库Elasticsearch
数据库(Database)索引(Index)
表(Table)类型(Type)
记录(Row)文档(Document)
字段(Column)字段(Fields)

 

http方法

方法描述
GET请求指定的页面信息,并返回实体主体
POST向指定资源提交数据进行处理请求。数据被包含在请求体中,POST请求可能会导致新的资源的建立或已有资源的修改
PUT向服务器传送的数据取代指定的文档的内容
DELETE请求服务器删除指定的页面

 

常见错误返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值