《Elasticsearch核心技术与实战》笔记 -- 第一

这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

视频课程:极客时间 – Elasticsearch核心技术与实战

为什么要学ElasticSearch

elasticsearch概述1.png

  • 主要功能
    • 分布式搜索引擎
      • 大数据近实时分析引擎
  • 产品特征
    • 高性能,和T+1说不
      • 容易使用 / 容易拓展
  • 互联网公司大量使用 ElasticSearch
    • 阿里、腾讯、小米、饿了么、滴滴、携程等等
  • 应用场景
    • 网站搜索 / 垂直搜索 / 代码搜索
    • 日志管理分析 / 安全指标监控 / 应用性能监控 / WEB抓取舆情

学习目标

  • 开发
    • 产品基本功能,底层工作原理,数据建模最佳实践
  • 运维
    • 容量规划;性能优化;问题诊断;滚动升级;
  • 方案
    • 搜索与如何解决搜索的相关性问题
    • 大数据分析实践与项目实战,理论知识运用到实际场景

课程实战

  • 1、电影搜索
  • 2、Stack OverFlow 调查问卷数据分析

课程内容与结构

  • ElasticSearch 入门与深入
    • 环境搭建 / 搜索与聚合 / 架构原理 / 数据建模
  • ElasticSearch 集群管理
    • 水平扩展及性能优化 / 最佳实践
  • ELK 进行大数据分析
    • 可视化分析 / 时序型数据 / 异常检测
  • 项目实战和知识点回顾
    • 电影搜索 / 问卷分析 / Elastic认证

三点学习建议

  • 勤动手
    • 本地搭建多节点的集群环境,理解分布式工作原理,执行教程中的每一个范例
  • 多思考
    • 结合实际的业务场景,深入思考,学会查询相关的技术文档
  • 定目标
    • 做一次分享,开发一个具体的项目,参加 Elastic 认证考试

ElasticSearch简介及其发展历史

从开源到上市

  • Elastic Inc - 开源软件 / 上市 公司
  • 当前市值 154.62(美股) 亿美元(2021/11/05 20:00:00),开盘当天涨幅达 94%
  • ElasticSearch 软件下载量,超 3.5 亿次 【2018年官方数据 www.elastic.co/blog/ze-bel…
  • 10 万 + 的社区成员
  • 7200 + 订阅用户,分布在 100+ 国家
  • 云服务 - Elastic,Amazon,阿里巴巴,腾讯

ElasticSearch 简介

  • ElasticSearch -开源分布式搜索分析引擎
    • 近实时(Near Real TIme)
    • 分布式存储 / 搜索 / 分析引擎
  • Solr (Apache 开源项目)
  • Splunk (商业上市公司)

db-engines.png

ElasticSearch v.s. Solr

Google treads.png

起源 - Lucene

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

ElasticSearch的诞生

Shay Banon, ElasticSearch 创始人,“Search is something that any application should hava.”

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

ElasticSearch 的分布式架构

分布式架构.png

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

支持多种方式集成接入

ElasticSearch 的主要功能

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

ElasticSearch搜索功能.png

市场反应

  • 2010 年第一次发布;2012 年成立公司
  • 成立 6个月,160万下载,首轮募到 1000万美金风险投资
    • Rod Johnson – Spring Framework创始人
    • Benchmark Capital / Data Collective

ElasticSearch 版本与升级

  • 0.4 :2010 年 2 月 第一次发布
  • 1.0: 2014 年 1 月
  • 2.0:2015 年 10 月
  • 5.0:2016 年 10 月
  • 6.0:2017 年 10 月
  • 7.0:2019 年 4 月

EOL Support - www.elastic.co/cn/support/…

新特性 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 功能免费试用 - 当前稳定版本 7.15
  • 部署k8s ECK - ElasticSearch Operator on Kuberneetes
  • 新功能
    • New Cluster coordination
    • Feature - Complete High Level REST Client
    • Script Score Query
  • 性能优化
    • 默认的 Primary Shard 数从 5 改为 1,避免 Over Sharding
    • 性能优化,更快的 Top K

Elastic Stack 家族成员及其应用场景

Elastic Stack 生态圈

elastic stack 生态圈.png

Logstash:数据处理管道

  • 开源的服务器端数据处理管道,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中
  • Logstash 诞生于 2009 年,最初用来做日志的采集于处理
  • Logstash 创始人 Jordan Sisel
  • 2013 年被 ElasticSearch 收购
  • 社区文化:“Remember:if a new user has a bad time, it’s a bug in logstash”

Logstash 特性

  • 实时解析和转换数据
    • 从 IP 地址破译地理坐标
    • 将 PII 数据匿名化,完全排除敏感数据
  • 可扩展
  • 可靠性安全性
    • Logstash 会通过持久化队列来保证至少将运行中事件传送一次
    • 数据传输加密
  • 监控

Kibana 可视化分析利器

  • Kibana 名字的含义:Kiwifruit + Banana (猕猴桃 + 香蕉)
  • Kibana 创始人: Rashid Khan
  • 数据可视化工具,帮助用户解开对数据的任何查询
  • 基于 Logatesh 的工具,2013 年加入 Elastic 公司

Kibana 特性

  • 提供各种可视化的图表
  • 可以通过机器学习的技术,对异常情况进行检测,用于提前发现可疑问题

BEATS - 轻量的数据采集器

Beats 是一款轻量级的数据采集器,采用 Go 语言编写。它集合了多种单一用途数据采集器。这些采集器安装后可用作轻量型代理,从成百上千或成千上万台机器向 Logstash 或 Elasticsearch 发送数据。

  • 轻量 —— Beats 是数据采集的得力工具。将这些采集器安装在你的服务器中,它们就会把数据汇总到 Elasticsearch。如果需要更加强大的处理性能,Beats 还能将数据输送到 Logstash 进行转换和解析。
  • 可拓展 —— 每款开源采集器都是以用于转发数据的通用库 libbeat 为基石。需要监控某个专用协议,可以自己构建采集器。

Beats 系列

www.elastic.co/cn/products…

beats系列.png

X-Pack:商业化套件

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

日志的重要性

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

日志的重要性.png

日志管理

日志管理.png

Elasticsearch 与数据库的集成

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

指标分析 / 日志分析流程

分析流程.png

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%