讲师:阮一鸣——eBay Pronto 平台技术负责人、极客时间『Elasticsearch 核心技术与实战』课程讲师
课程为了更多同学能快速体验 Elasticsearch,为大家提供了免费的阿里云 Elasticsearch (3节点1核2G)的测试环境>>>>去开通
课程回顾
7 | 在Docker容器中运行Elasticsearch Kibana和 Cerebro
8 | Logstash安装与导入数据
9 | 基本概念:索引、文档和REST API
10 | 基本概念:节点、集群、分片及副本
知识点一:在 Docker 容器中运行 Elasticsearch Kibana和 Cerebro
lasticsearch 成立之初就开始拥抱容器技术,官方不仅提供 Docker Image,同时在2019年5月,在发布7.1版本时,免费支持并提供 Elatic Operator on Kubernetes。而Cerebro 可以很好的让大家学习了解 Elasticsearch 分布式特性。
关于在本机运行 Docker 环境去启动 Elasticsearch 有两点好处
- 可以通过一行命令,快速搭建环境
- 非常快捷的清除数据
Demo 部分请跟随课程,动手试试吧
课程相关资料访问及下载
下载安装 Docker 与 Docker Compose
• https://www.docker.com
• https://docs.docker.com/compose
• https://docs.docker.com/machine/install-machine/
Docker - Compose 相关命令
• 运行 Docker- compose up
• docker Compose down
• docker Compose down - v
• docker stop / rm containerID
GitHub:https://github.com/onebirdrocks/geektime-ELK/
知识点二:Logstash 安装与导入数据
我们通过 Elastic 官网下载并安装 Logstash,并在 Docker 本地运行,下载需要确保版本号跟 Elasticsearch 相一致;
下载安装 Logstash:
http://www.elastic.co/downloads/logstash
开通阿里云 Logstash 2核4G 1个月免费测试环境_点击开通
通过Movieiens 测试数据集,写了一个配置文件,并通过 Logstash 将这些数据写入 Elasticsearch,这些测试数据对于我们学习查询 Elasticsearch 起到非常关键的作用
下载 Movie Len 数据:
https://grouplens.org/datasets/movielens/
Demo 部分请跟随课程,动手试试吧
知识点三:基本概念(1)- 索引,文档和 REST API
Elasticsearch 中的“索引”和“文档”是一个逻辑概念,偏向与开发者视角;“文档”是所有可能搜索数据的最小单位,“索引”是相似文档的集合。
关于“文档”
在 Elasticsearch 中,“文档”以序列化成 JSON 格式保存,每个文档均对应一个 Unique ID和元数据,如 【_index-索引名】、【_type-类型名】等
关于“索引”
在 Elasticsearch 中“索引”是相似文档的集合,每一个“索引”都有属于自己的 Mapping 定义文档,用于描述包含的字段名和类型。每一个索引可以创建一个 “Type”(Elasticsearch 7.0之后),每个“Type”底下有相同结构的文档。
与关系型数据库类比时,当用于全文检索,Elasticsearch 比较有优势,往往会将Elasticsearch 与数据库组合使用。
关于“REST API”
“REST API”是 Elasticsearch 为了方便其他语言整合,对程序做调用。当程序需要与 Elasticsearch 做集成时,我们仅需发出 HTTP 的请求,就可以得到相应的结果。
Demo 部分请跟随课程,动手试试吧
• 查看一些与 index 的相关 API
• 进入 Kinbana Index Management 界面,探索 Index 相关的信息
知识点四:基本概念(2)- 集群 / 节点 / 分片 / 副本
关于“集群”
Elasticsearch 的“集群”是一个分布式集群,满足“高可用”、“可拓展”的特性。不仅提供存储的水平扩容,而且当出现部分节点停止服务,也不影响整个集群的服务。
Elasticsearch 官方也提供 CAT API,来帮助了解“集群”健康状况,用“green”、“yellow”、“red”,分别代表集群“主、副分片分配正常”、“主分片正常分配,副本未正常分配”、“主分片未正常分配
关于“节点”
“节点”是一个 Elasticsearch 的实例,本质上是一个 JAVA 的进程,当节点启动后,系统会分配一个 UID,保存着在 Data 目录下。
不同的节点,会承担不同的角色
其他还有很多类型节点,比如需要做日志 Case 时,有“Hot & Warm Node”、用于机器学习的“Machine Learning Node”;
每个节点启动,都会读取 Elasticsearch YML 配置文件,用于决定自己承担说明角色
关于“分片/副本”
“分片”分为 Primary Shard & Replica Shard(主、副分片)
通过分片,将数据分布在集群节点上,生产环境中,需要提前规划分片容量
当分片设置过小
- 导致后续无法增加节点实现水平扩展
- 当分片数据量超过容量,重新分配数据会耗费过多时间
当分片设置过大
- 影响搜索结果相关性打分。
- 导致统计不准确,影响性能造成浪费。
Demo 部分请跟随课程,动手试试吧
• 查看一个集群的健康状态 http://localhost:9200/_cluster/health
• CAT API
- http://localhost:9200/_cat/nodes
- 查看索引和分片
• 设置分片数
• Kibana+Cerebro 界面介绍
下周课程预告
点击预约课程
11 | 文档的基本CRUD与批量操作
12 | URI Search详解
13 | 通过Analyzer进行分词
14 | Search API概览
相关活动
更多折扣活动,请访问阿里云 Elasticsearch 官网
• 阿里云 Elasticsearch 商业通用版,1核2G首月免费
• 阿里云 Elasticsearch 日志增强版,首月六折,年付六折
• 阿里云 Logstash 2核4G首月免费