Elasticsearch 分享
主要从以下几点做一下入门介绍
基础理论
索引、类型
增删改查
近实时(Near Realtime NRT)
查询
filter
bool
聚合
terms 聚合
时间聚合
文本分析与映射
分词、mapping 数据类型
节点与分片
一些术语说明
cluster
集群,一个ES集群由一个或多个节点(Node)组成,每个集群都有一个 cluster name作为标识。
node
节点,一个 ES 实例就是一个节点,一个机器可以有多个实例,所以并不能说一台机器就是一个节点,大多数情况下每个节点运行在一个独立的环境或虚拟机上。
index
索引,即一系列 documents 的集合。
type
类型,索引下的分类,低版本中可以存在多个类型,高版本中逐步修正该策略,一个索引只允许有一个类型
shard
- 分片,ES是分布式搜索引擎,每个索引有一个或多个分片,索引的数据被分配到各个分片上,相
当于一桶水用了 N 个杯子装。
2.分片有助于横向扩展,N 个分片会被尽可能平均地(rebalance)分配在不同的节点上(例如你有
2个节点,4个主分片(不考虑备份),那么每个节点会分到 2 个分片,后来你增加了 2 个节点,那么你
这 4 个节点上都会有 1 个分片,这个过程叫 Relocation,ES感知后自动完成)。 - 每个分片都是一个 Lucene Index,所以一个分片存放的文档数量是有限的。
replica
- 复制,可以理解为备份分片或者从分片,相应地有 primary shard(主分片)。
- 主分片和从分片不会出现在同一个节点上(防止单点故障),默认情况下一个索引创建 5 个分片,1
个备份,即 5 * (primary + replica) = 10个分片 - 如果你只有一个节点,那么 5 个 replica 都无法分配(unassigned)。
用一个图来表示:
需要修改配置文件,重启服务
节点
ES 作为一个分布式应用,
区分协调(coordinating)、摄取(ingest)、主(master)、数据(data)等节点
监控与诊断
监控
借助一些可视化管理工具,可以很直观的看到集群各方面的状态。目前 ES 可用的监控工具或插件很多,主要为以下几种:
- X-Pack+kibana,索引信息、集群整体信息很有帮助,尤其是各索引的索引、搜索速率,索引延迟数据等;其中,X-Pack 是官方给出的插件,各方面完善,推荐使用,缺点是只能试用一个月。
- ElasticHQ 支持监控,并提供了折线图,方便查看变化;支持实时搜索;支持索引列表信息查看等功能;支持 docker 安装。
- cerebro 支持查看分片分配、索引操作、监控等功能;可以使用 docker 安装;
- elasticsearch-head 谷歌浏览器插件,支持查看分片分配、索引操作等功能,简单方便,数据量大界面会有卡顿,显示不友好;
- _cat es 自带,可以在命令行使用,提供一些常用的监控项输出;
诊断
- 集群健康度
- Status:状态群集的状态。红色:部分主分片未分配。黄色:部分副本分片未分配。绿色:所有分片分配ok。
- Unassigned Shards。未分配的分片。尚未创建或分配副本的分片计数。
- 查询性能
- 查询队列长度(队列里堆积的查询任务太多)
- 索引性能
- 刷新数,可以配置
refresh_interval
- 刷新数,可以配置
- JVM 健康度
- 堆使用情况
- gc 情况
- 系统健康度
- 内存
- 磁盘
- cpu