因为Elasticsearch找不到系统学习的资料,而且官网写的比较凌乱,初来乍到有些不知所措,所以按照网上的思维导图先行动起来,一个个模块逐一学习之。首先学习基本概念:

基本概念
- 集群,多个相互合作的主机共同形成的一个集合称为集群。这个在分布式领域中常常被提及,应该不用多讲
- 节点,运行了单个
ES实例的主机,称为节点,它往往是集群中的一员。在ES中,节点的类型还蛮多样的:master,候选节点。此master并非指主节点,而是表示 候选的节点。data,数据节点。主要是存储索引数据的节点,主要对文档进行增删改查操作,聚合操作等。数据节点对cpu,内存,io要求较高, 在优化的时候需要监控数据节点的状态,当资源不够的时候,需要在集群中添加新的节点。data_contentdata_hot,热数据节点。保存被访问频率最高的节点data_warm,访问频率比较一般的节点data_cold,冷节点,基本上就是只读的,无法做更新操作lngest,预处理节点。可以把日志的数据交给预处理节点进行处理。ml,机器学习节点。可以帮助发现一些潜在的问题。transform,转换节点。voting_only,在进行master选举的时候,候选节点和投票节点 可以参与投票。但是投票节点不参与选举。
- 分片,将一个索引(一个数据库)切分为多个块,这个块就叫“分片”,这些分片本质上是一个
Lucene的实例。样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。降低单服务器的压力,构成分布式搜索,提高整体检索的效率(分片数的最优值与硬件参数和数据量大小有关)。分片的数量只能在索引创建前指定,并且索引创建后不能更改。 - 副本,副本是一个分片的精确复制,每个分片可以有零个或多个副本。副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
数据架构
索引,ES将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合。类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库。
一个ES集群中可以按需创建任意数目的索引,但根据不同的硬件配置,索引数有一个建议范围(这个知识点我们以后进行详细讲解)。
- 类型,一个索引可以有多个类型,这些类型的文档可以存储在相同的索引中。Lucene 没有文档类型的概念,每个文档的类型名被存储在一个叫
_type的元数据字段上。 当我们要检索某个类型的文档时, Elasticsearch 通过在_type字段上使用过滤器限制只返回这个类型的文档。 - 文档, 文档是Lucene索引和搜索的原子单位,它是包含了一个或多个域的容器,基于JSON格式进行表示。文档由一个或多个域组成,每个域拥有一个名字及一个或多个值,有多个值的域通常称为“多值域”。每个文档可以存储不同的域集,但同一类型下的文档至应该有某种程度上的相似之处。相当于mysql表中的row。
- 映射, 映射是定义文档及其包含的字段如何存储和索引的过程。例如,使用映射来定义: 哪些字符串字段应该被视为全文字段。 哪些字段包含数字、日期或地理位置。 文档中所有字段的值是否应该被索引到catch-all _all字段中。 日期值的格式。 用于控制动态添加字段的映射的自定义规则。 每个索引都有一个映射类型,它决定了文档的索引方式。
