es

Elasticsearch 系列 概述

Posted by lichao modified on January 24, 2022

ElasticSearch 作为一个基于 Apache Lucene 的分布式、可扩展、实时的搜索与数据分析引擎,具有十分强大的功能:

  • 全文搜索——相关性得分—–自动排序
  • 实时搜索
  • 分析与聚合 通过 ES 可以很方便的使大量数据具有搜索、分析和探索的能力。ES出色的性能也让其备受各类公司的喜爱,譬如WikiPedia,StackOverflow以及Github。 同时ElasticSearch和关系型数据库比如MySQL有很多相似的概念,因此上手门槛很低:

ES 的几大优势:

  • 具有高可用性、高扩展性: 很简便的横向扩容,分布式的架构,可以轻松地对资源进行横向纵向扩缩容,可以满足不同数据量级及查询场景对硬件资源的需求。能由数百台到万台机器搭建满足PB级的快速搜索,也能搭建单机版服务小公司。
  • 查询速度快,性能佳(相较于其他大数据解决方案): ES底层采用Lucene作为搜索引擎,并在此之上做了多重优化,保证了用户对数据查询数据的需求。可”代替”传统关系型数据库,也可用于复杂数据分析,海量数据的近实时处理等。
  • 搜索功能强大,高度匹配用户意图: ES 内部提供了完善的评分机制,会根据分词出现的频次等信息对文档进行相关性排序,保证相关性越高的文档排序越靠前。另外还提供了包括模糊查询,前缀查询,通配符查询等在内的多种查询手段,帮助用户快速高效地进行检索。
  • 功能点多但使用比较简便,开箱即用,性能优化比较简单
  • 生态圈丰富,社区活跃,适配多种工具。如下图,处理日志和输出到Elasticsearch,您可以使用日志记录工具,如Logstash(www.elastic.co/products/logstash),搜索和可视化界面分析这些日志,你可以使用 Kibana(www.elastic.co/产品/ kibana),即传说中的ELK技术栈。另外当前主流的大数据框架也几乎都支持ES,比如Flink和ES就是个完美搭档。

ES社区

应用场景

  • 日志实时分析: 这个是 ES 应用最广泛的领域,支持全栈的日志分析,包括各种应用日志、数据库日志、用户行为日志、网络数据、安全数据等等。ES 拥有一套完整的日志解决方案,可以秒级实现从采集到展示。
  • 搜索服务: 例如像腾讯文档基于 ES 做全文检索,电商客户拼多多、蘑菇街等大量的商品搜索都是基于 ES。
  • 时序分析: 典型的场景是监控数据分析,比如云监控,整个腾讯云的监控都是基于 ES 的。此外还包括物联网场景,也有大量的时序数据。时序数据的特点是写入吞吐量特别高,ES 支持的同时也提供了丰富的多维统计分析算子。
  • 查询服务: ES 在某些复杂的查询场景下可代替关系型数据库。ES 的优点在于查询,然而实践证明,在被作为数据库来使用,即写完马上查询会有延迟。

日志实时分析

日志实时分析

典型场景:

  • 运营日志,比如慢日志、异常日志,用来定位业务问题;
  • 业务日志,比如用户的点击、访问日志,可以用来分析用户行为;
  • 审计日志,可以用于安全分析。ES 很完美的解决了日志实时分析的需求。

具有如下特点:

  • Elastic 生态提供了完整的日志解决方案,任何一个开发、运维同学使用成熟组件,通过简单部署,即可搭建起一个完整的日志实时分析服务。
  • 在 Elastic 生态中,日志从产生到可访问一般在 10s 级。相比于传统大数据解决方案的几十分钟、小时级,时效性非常高。ES 拥有一套完整的日志解决方案(ELK),可以秒级实现从采集到展示。
  • 由于支持倒排索引、列存储等数据结构,ES 提供非常灵活的搜索分析能力。
  • 支持交互式分析,即使在万亿级日志的情况下,ES 搜索响应时间也是秒级

日志是互联网行业最基础、最广泛的数据形式,ES 非常完美的解决了日志实时分析场景,这也是近几年 ES 快速发展的一个重要原因。

搜索服务

搜索服务

典型场景:

  • 商品搜索,类似京东、淘宝、拼多多中的商品搜索;
  • APP 搜索,支持应用商店里的应用搜索;
  • 站内搜索,支持论坛、在线文档等搜索功能。

具有如下特点:

  • 高性能:单个服务最大达到 10w+ QPS,平响 20ms~,P95 延时小于 100ms
  • 强相关: 搜索体验主要取决于搜索结果是否高度匹配用户意图,需要通过正确率、召回率等指标进行评估。
  • 高可用: 搜索场景通常要求高可用性,支持单机房故障容灾。任何一个电商服务,如淘宝、京东、拼多多,只要故障一个小时就可以上头条。

时序数据分析

实时数据分析

典型场景:

  • Metrics,即传统的服务器监控;整个腾讯云的监控都是基于 ES 的。
  • APM,应用性能监控;
  • 物联网数据,智能硬件、工业物联网等产生的传感器数据。时序数据的特点是写入吞吐量特别高,ES 支持的同时也提供了丰富的多维统计分析算子。

具有如下特点:

  • 高并发写入:线上单集群最大规模达到 600+节点、1000w/s 的写入吞吐
  • 高查询性能:要求单条曲线 或者单个时间线的查询延时在 10ms~。
  • 多维分析:要求灵活、多维度的统计分析能力,比如我们在查看监控的时候,可以按照地域、业务模块等灵活的进行统计分析。

应用场景划分

可以划分为两类:搜索类和时序类。 搜索类业务

首先,我们一起看看搜索类业务的挑战。以电商搜索、APP 搜索、站内搜索为代表,这类业务非常重视可用性,服务 SLA 达到 4 个 9 以上,需要容忍单机故障、单机房网络故障等;同时要求高性能、低毛刺,例如 20w QPS、平响 20ms、P95 延时 100ms。总之,在搜索类业务场景下,核心挑战点在于高可用、高性能。

时序类业务 另一类我们称之为时序类业务挑战,包含日志、Metrics、APM 等场景。相比于搜索类业务重点关注高可用、高性能,时序类业务会更注重成本、性能。比如时序场景用户通常要求高写入吞吐,部分场景可达 1000w/sWPS;在这样写入吞吐下,保留 30 天的数据,通常可达到 PB 级的存储量。而现实是日志、监控等场景的收益相对较低,很可能用户用于线上实际业务的机器数量才是 100 台,而监控、日志等需要 50 台,这对多数用户来说,基本是不可接受的。所以在时序类业务中,主要的挑战在于存储成本、计算成本等方面。

参考文献

腾讯万亿级 Elasticsearch 技术解密

携程酒店订单Elasticsearch实战