Elasticsearch 学习笔记Day 01

202 阅读5分钟

hi,我是蛋挞,一个初出茅庐的后端开发,希望可以和大家共同努力、共同进步!


开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情

  • 起始标记->概述(4讲):「01 | 课程介绍」
  • 结尾标记->概述(4讲):「04 | Elastic Stack家族成员及其应用场景」

Elasticsearch 官网

www.elastic.co/

Elasticsearch 能做什么?

Elasticsearch 是一款非常强大的开源搜索及分析引擎。可以帮助你从海量数据中,快速找到相关的信息。 除了搜索,结合 Kibana、Logstash、Beats,Elastic Stack 还被广泛运用在大数据近实时分析领域,包括日志分析、指标监控、信息安全等多个领域。可以实现探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值。甚至通过使用机器学习技术,自动识别异常状况。

课件地址

gitee.com/geektime-ge…

起源 - Lucene

  • 基于Java语言开发的搜索引擎类库
  • 创建于1999年,2005年成为Apache顶级开源项目
  • Lucene具有高性能、易扩展的优点
  • Lucene的局限性:
    • 只能基于Java语言开发
    • 类库的接口学习曲线陡峭
    • 原生并不支持水平扩展

Elasticsearch的诞生

  • 2004 年 Shay Banon 基于 Lucene 开发了 Compass
  • 2010 年 Shay Banon 重写了 Compass, 取名Elasticsearch
    • 支持分布式,可水平扩展
    • 降低全文检索的学习曲线, 可以被任何编程语言调用

Elasticsearch的分布式架构

  • 集群规模可以从单个扩展至数百个节点
  • 高可用 & 水平扩展
    • 服务和数据两个维度
  • 支持不同的节点类型
    • 支持 Hot & Warm 架构

image.png

支持多种方式集成接入

  • 多种编程语言的类库(www.elastic.co/guide/en/el…)
    • Java / .NET / Python / Ruby / PHP / Groovy / Perl
  • RESTful API v.S Transport API
    • 9200 v.S 9300 (建议使用RESTful API)
  • JDBC & ODBC

Elasticsearch的主要功能

搜索 —— 聚合

  • 海量数据的分布式存储以及集群管理
    • 服务与数据的高可用,水平扩展
  • 近实时搜索,性能卓越
    • 结构化 / 全文 / 地理位置 / 自动完成
  • 海量数据的近实时分析
    • 聚合功能

新特性 5.x

  • Lucene 6.x,性能提升,默认打分机制从 TF-IDF 改为 BM 25
  • 支持 Ingest 节点/ Painless Scripting / Completion suggested 支持 / 原生的Java REST客户端
  • Type 标记成 deprecated, 支持了 Keyword 的类型
  • 性能优化
    • 内部引擎移除了避免同一文档并发更新的竞争锁,带来15% - 20%的性能提升
    • Instant aggregation, 支持分片上聚合的缓存
    • 新增了 Profile API

新特性 6.x

  • Lucene 7.x
  • 新功能
    • 跨集群复制(CCR)
    • 索引生命周期管理
    • SQL的支持
  • 更友好的的升级及数据迁移
    • 在主要版本之间的迁移更为简化,体验升级
    • 全新的基于操作的数据复制框架,可加快恢复数据
  • 性能优化
    • 有效存储稀疏字段的新方法,降低了存储成本
    • 在索引时进行排序,可加快排序的查询性能

新特性 7.x

  • Lucene 8.0
  • 重大改进-正式废除单个索引下多Type 的支持
  • 7.1开始,Security 功能免费使用
  • ECK - Elasticseach Operator on Kubernetes
  • 新功能
    • New Cluster coordination
    • Feature- Complete High Level REST Client
    • Script Score Query
  • 性能优化
    • 默认的Primary Shard数从5改为1,避免 Over Sharding
    • 性能优化,更快的Top K

Elastic Stack 生态圈

image.png

LogStash:数据处理通道

  • 开源的服务器端数据处理通道,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中
  • Logstash 诞生于2009年,最初用来做日志的采集与处理
  • Logstash 创始人 Jordan Sisel
  • 2013年被 Elasticsearch 收购

LogStash 特性

  • 实时解析和转换数据
    • 从 IP 地址破译出地理坐标
    • 将 PII 数据匿名化,完全排除敏感字段
  • 可扩展
    • 200多个插件 (日志/数据库/Arcsigh/Netflow)
  • 可靠性安全性
    • Logstash会通过持久化队列来保证至少将运行中的事件送达一次
    • 数据传输加密
  • 监控

Kibana:可视化分析利器

  • Kibana 名字的含义= Kiwifruit + Banana
  • 数据可视化工具,帮助用户解开对数据的任何疑问
  • 基于 Logstash 的工具,2013 年加入 Elastic 公司

Elastic 的发展

  • 2015 年 3 月收购 Elastic Cloud,提供 Cloud 服务
  • 2015 年 3 月收购 PacketBeat
  • 2016 年 9 月收购 PreAlert - Machine Learning 异常检测
  • 2017 年 6 月收购 Opbeat 进军 APM
  • 2017 年 11 月收购 SaaS 厂商 Swiftype, 提供网站和 App 搜索
  • 2018 年 X-Pack 开源

BEATS - 轻量的数据采集器

image.png [www.elastic.co/cn/ products/beats](www.elastic.co/cn/ products/beats)

X-Pack:商业化套件

  • 6.3之前的版本,X-Pack 以插件方式安装
  • X-Pack开源之后,Elasticsearch & Kibana支持OSS版和Basic两种版本
    • 部分X-Pack功能支持免费使用,6.8和7.1开始,Security 功能免费
    • OSS, Basic, 黄金级,白金级
  • www.elastic.co/cn/subscrip…

image.png

日志的重要性

  • 为什么重要
    • 运维:医生给病人看病。日志就是病人对自己的陈述
    • 恶意攻击,恶意注册,刷单,恶意密码猜测
  • 挑战
    • 关注点很多,任何一个点都有可能引起问题
    • 日志分散在很多机器,出了问题时,才发现日志被删了
    • 很多运维人员是消防员,哪里有问题去哪里

image.png

日志管理

image.png

Elasticsearch 与数据库的集成

  • 单独使用Elasticsearch存储
  • 以下情况可考虑与数据库集成
    • 与现有系统的集成
    • 需考虑事务性
    • 数据更新频繁

image.png

指标分析 / 日志分析

image.png

总结


Elasticseach是一款开源的搜索和分析引擎,具有极好的性能,天生支持水平扩展,RESTful的接口也支持各种语言,方便做集成的接入,还有良好的社区支撑。Elastic Stack基于Elasticsearch、LogStash、Kibana构建出的一整套的生态系统,适合大量的应用场景。关于架构的接入,具体的架构结合项目的使用场景,在搜索类的时候推荐将数据库和Elasticseach同步,在日志类的场景的时候可以引入Kafka这样的缓冲层进行缓冲。

此文章为2月Day1学习笔记,内容来源于极客时间《Elasticsearch 核心技术与实战》