ES笔记二:架构及核心概念

摘要:
每个索引有唯一的名字,通过这个名字来操作它。从6.0.0版本起已废弃,一个索引中只存放一个type。每个分片本身也是一个功能完善且独立的“索引”,可以被放置在集群的任意节点上。

1. ES的架构

2.核心概念

1.Near Realtime(NRT)

2.Cluster

3.Node

4.Index

5.Type

6.Document

7.Shard

8.Replication

9.Segment

10.和关系型数据库的对比

11.倒排索引

12.文档打分机制


1. ES的架构

ES笔记二:架构及核心概念第1张

Gateway它是ES用来存储索引的文件系统,支持多种类型,更多
Distributed Lucene Directory它是一个分布式的lucene框架,位于Gateway的上层,内部包含Lucene-core
Index Module

索引模块控制与所有索引全局管理的与索引相关的设置,而不是在每个索引级别上可配置,可用的设置包括:

Circuit breaker断路器对内存使用设置限制,以避免内存溢出异常

Fielddata cache设置内存中fielddata缓存使用的堆数量的限制

Node query cache配置用于缓存查询结果的堆数量

Indexing buffer控制分配给索引进程的缓冲区的大小

Shard request cache控制shard-level请求缓存的行为

Recovery控制shard恢复过程中的资源限制

Search Module后续专门讲
Mapping后续专门讲
Discovery它是ES的节点发现模块,不同机器上的ES节点要组成集群需要进行消息通信,集群内部需要选举master节点,这些工作都是由Discovery模块完成。支持多种发现机制,如 Zen 、EC2、gce、Azure
ScriptingScripting用来支持在查询语句中插入javascript、python等脚本语言,scripting模块负责解析这些脚本,使用脚本语句性能稍低
3rd PluginsES也支持多种第三方插件
Transport它是ES的传输模块,支持多种传输协议,如 Thrift、memecached、http,默认使用http
JMXJMX是java的管理框架,用来管理ES应用。
RESTful style API客户端可以通过RESTful接口和ES集群进行交互
Java(Netty)

基本的结构ES各个版本没有什么变化。

2.核心概念

1.Near Realtime(NRT)

近实时。数据提交索引后,立马就可以搜索到。

2.Cluster

集群,一个集群由一个唯一的名字标识,默认为“elasticsearch”。集群名称非常重要,具有相同集群名的节点才会组成一个集群。集群名称可以在配置文件中指定。

3.Node

节点,存储集群的数据,参与集群的索引和搜索功能。像集群有名字,节点也有自己的名称,默认在启动时会以一个随机的UUID的前七个字符作为节点的名字,你可以为其指定任意的名字。通过集群名在网络中发现同伴组成集群。一个节点也可是集群。

4.Index

索引,一个索引是一个文档的集合(等同于solr中的集合)。每个索引有唯一的名字,通过这个名字来操作它。一个集群中可以有任意多个索引。

5.Type

类型,指在一个索引中,可以索引不同类型的文档,如用户数据、博客数据。从6.0.0 版本起已废弃,一个索引中只存放一个type。

6.Document

文档,被索引的一条数据,索引的基本信息单元,以JSON格式来表示。

7.Shard

分片,在创建一个索引时可以指定分成多少个分片来存储。每个分片本身也是一个功能完善且独立的“索引”,可以被放置在集群的任意节点上。分片的好处:

  • 允许我们水平切分/扩展容量
  • 可在多个分片上进行分布式的、并行的操作,提高系统的性能和吞吐量。

注意:分片数创建索引时指定,创建后不可改了。备份数可以随时改。

8.Replication

备份,一个分片可以有多个备份(副本)。备份的好处:

  • 高可用,一个主分片挂了,副本分片就顶上去
  • 扩展搜索的并发能力、吞吐量。搜索可以在所有的副本上并行运行

9.Segment

段,索引是由段(Segment)组成的,段存储在硬盘(Disk)文件中,段不是实时更新的,这意味着,段在写入磁盘后,就不再被更新。ElasticSearch引擎把被删除的文档的信息存储在一个单独的文件中,在搜索数据时,ElasticSearch引擎首先从段中查询,再从查询结果中过滤被删除的文档,这意味着,段中存储着“被删除”的文档,这使得段中含有”正常文档“的密度降低。多个段可以通过段合并(Segment Merge)操作把“已删除”的文档将从段中物理删除,把未删除的文档合并到一个新段中,新段中没有”已删除文档“,因此,段合并操作能够提高索引的查找速度,但段合并是IO密集型的操作,需要消耗大量的硬盘IO。

10.和关系型数据库的对比

RDBMSES
数据库(database)索引(index)
表(table)类型(type)
行(row)文档(document)
列(column)字段(field)
表结构(schema)映射(mapping)
词(Term)表示文本中的一个单词
标记(Token)表示在字段中出现的词,由该词的文本、偏移量(开始和结束)以及类型组成
索引反向索引
SQL查询DSL
SELECT * FROM ...GET http://...
INSERT INTOPUThttp://...
UPDATE SET ...POST http://...
DELETE ...DELETEhttp://...

免责声明:文章转载自《ES笔记二:架构及核心概念》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nodejs npm常用命令TextWriter记录日志下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ELK学习笔记之Elasticsearch删除指定日期的数据(脚本+定时任务)

0x00 概述 目前使用的ES版本为6.3.x,经过长时间的积累,ES内数据越来越多,需要删除指定日志之前的日志。 例如只要求保留60天的日志,那么就要删除60天之前的所有索引和日志。 0x01 ES删除XX天之前的索引和数据 #!/bin/sh#ES版本为6.3.x function delIndex() { #此处输入要删除的索引名字...

如何优化mysql查询速度

1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id fr...

sqlserver 索引

什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K。为了加快查找的速度,汉语字(词)典一般都有按拼音、笔画、偏旁部首等排序的目录(索引),我们可以选择按拼音或笔画查找方式,快速查找到需要的字(词)。 同理,SQL Server允许用户在表中创建索引,指定按某列预...

MySQL索引及使用详解

一.索引的作用        一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。        在数据量和访问量不大的情况下,mysql访问是非常快的,是否加索引对访问影响不大。但是当数据量和访问量剧增的时候,就会发现mysql变慢...

MySQL-快速入门(14)MySQL性能优化

1、MySQL性能优化包括查询速度优化、数据库结构优化、数据库服务器优化等。 优化的切入点:合理的结构设计、表结构、索引、查询语句。 2、show status查询数据库的性能参数 show status like 'value';value:Connections=>连接MySQL服务器的次数Uptime=>MySQL服务器的上线时间Slow...

Elasticsearch集群角色类型node.master及node.data

在Elasticsearch当中,ES分为三种角色:master、data、client。 三种角色由elasticsearch.yml配置文件中的node.master、node.true来控制。 如果不修改elasticsearch的节点角色信息,那么默认就是node.master: true、node.data: true 默认情况下,es集群中的每...