ES学习1-认识

  1. 什么是 ElasticSearch
  2. 为什么要学习 ElasticSearch
  3. Elastic Stack 生态
  4. 基础概念
  5. 参考资料

什么是 ElasticSearch

ElasticSearch (下称ES)是基于 Apache Lucene 实现的一个分布式搜索引擎。借助ES,你可以为数据建立索引,并在索引上以准实时的方式搜索或者分析你的数据。所以,ES与常见的关系型数据库的应用场景大不相同。ES可以有以下应用场景:

  • 在App或者网站中增加搜索功能;
  • 保存并且分析日志数据、指标数据、事件数据等;
  • 使用机器学习实时自动建模数据的行为;
  • 使用Elasticsearch作为存储引擎自动化业务工作流;
  • 使用Elasticsearch作为地理信息系统(GIS)管理、整合和分析空间信息;
  • 使用Elasticsearch作为生物信息学研究工具存储和处理遗传数据

learn more

为什么要学习 ElasticSearch

根据DB Engine的排名显示,ElasticSearch是最受欢迎的企业级搜索引擎。根据 DB Engines 网站排名可知,比较靠前的有三家大数据搜索引擎公司,除了ElasticSearch,还有Splunk和Solr。其中Solr也是基于Lucene。

  • 1、在当前软件行业中,搜索是一个软件系统或平台的基本功能, 学习ElasticSearch就可以为相应的软件打造出良好的搜索体验。

  • 2、其次,ElasticSearch具备非常强的大数据分析能力。虽然Hadoop也可以做大数据分析,但是ElasticSearch的分析能力非常高,具备Hadoop不具备的能力。比如有时候用Hadoop分析一个结果,可能等待的时间比较长。

  • 3、ElasticSearch可以很方便的进行使用,可以将其安装在个人的笔记本电脑,也可以在生产环境中,将其进行水平扩展。

  • 4、国内比较大的互联网公司都在使用,比如小米、滴滴、携程等公司。另外,在腾讯云、阿里云的云平台上,也都有相应的ElasticSearch云产品可以使用。

  • 5、在当今大数据时代,掌握近实时的搜索和分析能力,才能掌握核心竞争力,洞见未来。(涨工资)

Elastic Stack 生态

ELK Stack 核心产品包括 Elasticsearch、Kibana、Beats 和 Logstash等等。能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化

  • Beats 是一组轻量级守护进程的集合,它们从服务器收集操作数据并将其发送到Elasticsearch或Logstash。Elastic 社区提供了很多开源的 beats,包括:AuditBeat、FileBeat、FunctionBeat、HeartBeat等等。你也可以开发定制自己想要的beats。

beats-platform.png

具体见:beats-reference

  • Logstash 是一个具有实时流水线功能的开源的数据收集引擎。Logstash可以动态地统一来自不同来源的数据,并将数据规范化到你指定的地方。说人话就是:Logstash是一个实时洗数的数据通道。
    basic_logstash_pipeline.png

具体见:logstash introduction

  • Kibana 是用来驾驭ELK Stack的可视化管理页面,可以实现:
    • 搜索、观察、保护你的数据。
    • 分析你的数据
    • 管理、监控、守护你的ELK Stack。

analytics-home-page.png

具体见:kibana introduction

  • ElasticSearch 对数据进行存储、搜索、分析,其是基于JSON的分布式搜索和分析引擎,专门为实现水平可扩展性、高可靠性和管理便捷性而设计的。它的实现原理主要分为以下几个步骤:
    • 首先用户将数据提交到ElasticSearch数据库中;
    • 再通过分词控制器将对应的语句分词;
    • 将分词结果及其权重一并存入,以备用户在搜索数据时,根据权重将结果排名和打分,将返回结果呈现给用户;

基于以上四大组件,常见的日志收集系统可以有如下架构:
advanced_log_system.png

引入消息队列等组件,也可以有以下更灵活的架构:

flexible_log_system.png

基础概念

  • 索引 Index:类似MySQL中database的概念。一个Index下包含多种类型(type)的数据,在类型(type)概念在6.0.0版本废弃后,Index其实更类似于MySQL的表概念(table);
  • 类型 Type:已废弃,忽略;
  • 文档 Document:插入的每条数据为一个document。这个概念和mongodb的document相同,也和MySQL的数据行(Row)等价;
  • 字段 Field:ES是以JSON的格式插入数据的,数据中的每个字段都类似于MySQL中的一列;
  • 映射 Mapping:ES支持自动创建索引,但更常用的方式是通过Mapping指定索引的结构。Mapping类似于MySQL中的表结构定义;
  • 倒排索引:注意区分与上边的Index(索引)概念区分开来。ES是通过倒排索引来实现高效的数据搜索。

es-introduce-1-3.png

参考资料

https://www.elastic.co/guide/index.html
https://www.cnblogs.com/supersnowyao/p/11110703.html
https://pdai.tech/md/db/nosql-es/elasticsearch-x-introduce-1.html
https://www.elastic.co/pdf/architecture-best-practices.pdf
https://pdai.tech/md/db/nosql-es/elasticsearch-x-introduce-2.html


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 duval1024@gmail.com

×

喜欢就点赞,疼爱就打赏