1. ES
1.1. 知识点
说明1. Elasticsearch是一个基于Lucene的实时的分布式搜索和分析引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。基于RESTful接口。
2. ES cluster(集群)是一个或者多个节点的集合,它们一起保存数据并且提供所有节点联合索引以及搜索功能。集群存在一个唯一的名字身份且默认为 “elasticsearch”。这个名字非常重要,因为如果节点安装时通过它自己的名字加入到集群中的话,那么一个节点只能是一个集群中的一部分。请确保您在不同环境中不要重复使用相同的集群名字,否则您可能最终会将节点加入到了错误的集群中。例如,您可以使用 logging-dev,logging-stage,以及 logging-prod 用于 development(开发),staging(演示)和 production(生产)集群。注意,一个集群如果只有一个结点也是有效的,并且完全可行的。此外,您还可以有多个独立的集群并且每个集群都有它自己唯一的 cluster name(集群名)。
3. ES node(节点)是一个单独的服务器,它是集群的一部分,存储数据,参与集群中的索引和搜索功能。像一个集群一样,一个节点通过一个在它启动时默认分配的一个随机的 UUID(通用唯一标识符)名称来识别。如果您不想使用默认名称您也可自定义任何节点名称。这个名字是要识别网络中的服务器对应这在您的 Elasticsearch 集群节点管理的目的是很重要的。节点可以通过配置 cluster name 来加入到指定的集群中。默认情况下,每个节点安装时都会加入到名为 elasticsearch 的集群中,这也就意味着如果您在网络中启动许多节点(假设它们可以发现彼此),它们全部将自动的构成并且加入到一个名为 elasticsearch 的单独的集群中。在一个集群中,你需要多少就可以添加多少节点。此外,如果在当前网络中没有其它 elasticsearch 节点在运行,则启动一个节点将会默认形成一个叫 elasticsearch 的单节点集群。
4. ES index(索引)是具有稍微类似特征文档的集合。例如,您有一个消费者数据的索引,一个产品目录的索引,和另一个是订单数据的索引。一个索引通过名字(必须全部是小写)来标识,并且该名字在对 document(文档)执行 indexing(索引),search(搜索),update(更新)和 delete(删除)操作时会涉及到。在一个单独的集群中,您可以定义您想要的许多索引。
5. 在 Index(索引)中,可以定义一个或多个类型。一个类型是索引中一个逻辑的种类/分区,它的语义完全取决于您自己。一般情况下,一个类型被定义成一组常见字段的文档。例如,假设您运行着一个博客平台并且在一个单独的索引中存储了所有的数据。在这个索引中,您也许定义了一个用户数据类型,博客数据类型和评论数据类型。
6. ES document(文档)是索引信息的基本单位。例如,您有一存储 customer(客户)数据的文档,另一个是存储 product(产品)数据的文档,还有一个是存储 order(订单)数据的文档。该文档可以使用 JSON 来表示,它是一种无处不在的互联网数据交换格式。在索引/类型中,您可以存储许多文档。注意,尽管一个文档物理的存在于索引中,实际上一个文档必须被分配给索引内的类型。
7. 分片和副本:索引可以存储大量数据,可以超过单个节点的硬件限制。例如,十亿个文档占用了 1TB 的磁盘空间的单个索引可能不适合放在单个节点的磁盘上,并且从单个节点服务请求会变得很慢。为了解决这个问题,Elasticsearch 提供了把 Index(索引)拆分到多个 Shard(分片)中的能力。在创建索引时,您可以简单的定义 Shard(分片)的数量。每个 Shard 本身就是一个 fully-functional(全功能的)和独立的 “Index(索引)”,(Shard)它可以存储在集群中的任何节点上。ES每个索引可以被拆分成多个分片,一个索引可以设置 0 个(没有副本)或多个副本。开启副本后,每个索引将有主分片(被复制的原始分片)和副本分片(主分片的副本)。分片和副本的数量在索引被创建时都能够被指定。在创建索引后,您也可以在任何时候动态的改变副本的数量,但是不能够改变分片数量。默认情况下,Elasticsearch 中的每个索引分配了 5 个主分片和 1 个副本,这也就意味着如果您的集群至少有两个节点的话,您的索引将会有 5 个主分片和另外 5 个副本分片(1 个完整的副本),每个索引共计 10 个分片。
8. ES不允许用root用户启动,需要切换到普通用户启动,因为ES有远程脚本执行功能,容易中木马病毒。
9. 配置yml结尾的配置文件都需要在冒号后面加空格才可以生效。
10. ES存在三种状态分别是red、green yellow,green状态表示健康状态,说明所有的主分片包括备份都可用,yellow状态表示主分片可用,但是备份不可用(或者是没有备份),red状态表示部分的分片可用,表明分片有一部分损坏。此时执行查询部分数据仍然可以查到,但是数据不完整。
1.2. 功能截图
1.3. 功能详述
如功能截图所示在ES功能点中,我们将ES群组使用列表的形式展示。列表中从左到右列依次为:序号,群组编号,群组名称,群组描述,集群模式(单机和集群两种模式),修改(对该群组信息做修改),删除(移除该群组,以及该群组下的实例),监控(点击进入ES监控页面),以下对具体功能展开说明。
1.3.1. 群组新增
通过群组列表->点击左上方新增按钮进入新增群组页面,如下图:
输入字段说明:
- 群组类型:群组类型包括单机和集群两种,单机表示当前ES只有一个节点,集群表示当前ES有多个节点
- 群组编号:必须与当前ES配置文件elasticsearch.yml中的cluster.name字段相同,否则无法进行添加
- 群组名称:默认与群组编号相同,也可以自定义
- 群组描述:填写群组的描述,可以为空
- 服务器IP:填写服务器地址,用于连接ES客户端
实例端口:该端口表示连接ES的客户端端口,默认为9300
输入完以上字段,点击下一步将查询到当前已经开启的节点列表,点击新增按钮新增ES
1.3.2. 群组修改
通过ES群组列表->点击列表中修改按钮进入修改ES群组页面,如下图:
在ES修改页面可以修改群组名称,群组描述,实例可以修改是否监控字段。
1.3.3. 群组删除
通过ES群组列表->点击列表中删除按钮删除ES群组,如下图:
注意:删除ES群组列表的同时,当前群组下面的实例列表也会一起删除。
1.3.4. ES监控
通过ES群组列表->点击列表中监控按钮进入ES监控页面,如下图:
ES监控页面包括概览和开发工具两个子页面
- 概览页面
概览页面显示了当前集群的节点列表,节点名称前面的星号表示该节点是主节点,其它节点是副节点。
点击节点名称进入当前节点的监控页面,显示了节点和分片信息,如下图:
监控大盘显示了用户比较关心的进程CPU使用百分比、JVM堆内存使用百分比、当前搜索率(在一定时间内搜索的总数除以搜索的总时间)、当前搜索延迟(在一定时间内搜索的总时间除以搜索的总数)、当前索引率(在一定时间内索引的总数除以索引的总时间)和当前索引延迟(在一定时间内索引的总时间除以索引的总数)监控项。点击图表监控选择框,选择详细图表,显示更多的监控项。使用丰富的图表来展示包括:折线图,柱线图和数据等视图展示。
- 索引页面
索引子页面显示了当前集群的索引列表,点击索引名称进入当前索引的详细信息页面,如下图:
索引详细信息页面显示了索引字段信息和分片信息,字段信息包括字段名称和字段类型,分片信息显示当前索引下分片分布在各个节点的情况。
- 开发工具页面
开发工具子页面,用户在左边文本域输入ES DSL语法,点击运行按钮,右边文本域显示返回的结果。