4.1、Elasticsearch概述


特点:分布式、基于JSON和HTTP接口

4.1.1、Elastic Stack家族

基于 Elasticsearch 衍生出一系列开源软件,统称 Elastic Stack

  • 分布式搜索引擎:Elasticsearch

  • 可视化分析平台:Kibana

  • 日志采集、解析工具:Logstash

  • 数据采集工具:Beats 家族

    • Filebeat:收集文件数据,轻量级日志采集工具;
    • Metricbeat:搜集 系统、进程、文件系统 级别的 CPU和内存使用情况;
    • Packetbeat:收集网络流数据;实时监控 系统应用和服务,将延迟时间、错误、响应、SLA性能等发送到 Logstash或Elasticsearch
    • Winlogbeat:收集 windows 事件日志数据;
    • Heartbeat:监控服务器运行状态;

Elastic家族配合使用时,版本必须一致;

4.1.3、架构解读

  • Gateway 存储索引的文件系统:

    • Local FileSystem —— 存储在本地文件系统;
    • Shared FileSystem —— 共享存储;
    • Hadoop HDFS —— 使用 hdfs 分布式存储;
    • Amazon S3 —— 存储Amazon S3云服务上;
  • 分布式 Lucene 层,Elasticsearch 的底层 API由 Lucene 提供,每一个ES节点 都有 一个Lucene引擎支持:

    • 索引模块
    • 搜索模块
    • 映射解析模块
    • River模块 —— 用来导入第三方数据源,2.X之后已经废弃
  • Discovery模块 —— Elasticsearch 节点发现,集群内master选举,节点间通信

  • Scripting模块 —— 支持 JavaScript、Python 等多种语言

  • 第三方插件模块 —— 支持 多种第三方插件;

  • Transport —— ES传输模块,支持 Thrift,Memcached、HTTP,默认使用 HTTP;

  • JMX——Java管理框架,用来管理 Elasticsearch 应用;

  • RESTFull API —— ES提供给用户的接口

4.1.4、优点

  • 分布式 —— 灵活的横向扩展,自动识别新节点 并 重新平衡分配数据;
  • 全文检索 —— 多语言支持、强大的查询语言、地理位置支持、上下文感知的建议、自动完成和搜索片段;
  • 近实时搜索和分析 —— 近实时搜索,也可以 聚合分析;
  • 高可用 —— 容错机制,自动发现新节点 和失败节点,重新分配数据,确保集群可用;
  • 模式自由 —— 动态 mapping 机制,自动检测 数据结构和类型,创建索引,使数据可搜索;
  • RESTFul API —— 任何语言都能访问;

4.1.5、应用场景

1、站内搜索 —— 全文检索功能;

2、NoSQL数据库 —— 读写性能优于 MongoDB;

3、日志分析 —— 经典的ELK日志分析平台;

4.1.6、核心概念

集群 —— 多个节点组成的集群;

节点 —— 一个服务器

索引 —— 拥有 几分相似特征 的 文档的集合;

类型 —— 索引在一个逻辑上的分类 或 分区;

文档 —— JSON格式,被索引的基础信息单元;

分片 —— 一个索引大小 可以超出 单节点硬件限制,一个索引 可以分成多个分片;

​ 分片 水平分割和扩容 你的内存容量;

​ 可以在 主副分片 上 并行查询,提高性能和吞吐量;

副本 —— 分片的 一份或多份拷贝,分为主分片 和 副分片;