来源:极客时间elasticsearch课程

Elasticsearch的主要功能:
1.海量数据的分户式存储以及集群管理:服务与数据的高可用,水平扩展
2.近实搜索,性能卓越:结构化、全文、地理位置、自动完成
3.海量数据的近实时分析:聚合功能

新特性 5.X

基本概念

索引、文档 偏向开发人员视角,逻辑上的概念
节点、分片偏向运维人员,物理上的概念

文档

  • Elasticsearch是面向文档的,文档是所有可搜索数据的最小单位
    • 日志文件中的日志项
    • 一本电影的具体信息 / 一张唱片的详细信息
    • MP3播放器里的一首歌 / 一篇PDF文档中的具体内容
  • 文档会背序列化成JSON格式,保存在Elasticsearch中
    • JSON对象由字段组成
    • 每个字段都有对应的字段类型(字符串 / 数值 / 布尔 / 日期 / 二进制 / 范围类型 )
  • 每个文档都有一个Unique ID
    • 可以指定ID
    • 或者通过Elasticsearch自动生成

JSON文档

  • 一篇文档包含了一系列的字段。类似数据库表中一条记录
  • JSON文档,格式灵活,不需要预先定义格式
    • 字段的类型可以指定或者通过Elasticsearch自动推算
    • 支持数组 / 支持嵌套

图片.png如图,将CSV file转换为json格式的数据

文档的元数据

  • 元数据,用于标注文档的相关信息
    • _index:文档所属的索引名
    • _type:文档所属的类型名
    • _id:文档唯一ID
    • _source:文档的原始JSON数据
    • _all:整合所有字段内容到该字段,已被废除
    • _version:文档的版本信息
    • _score:相关性打分

图片.png

索引

图片.png
索引的不同语意
图片.png
Type

  • 在7.0之前,一个Index可以设置多个Types
  • 6.0开始,Type已经被Deprecated。7.0开始,一个索引只能创建一个Type-“_doc”

传统关系型数据库和Elasticsearch的区别:

  • Elasticsearch - Schemaless / 相关性 / 高性能全文检索
  • RDMS - 事务性 / Join

图片.png

REST API

图片.png一些基本的API

  • Indices
    • 创建Index
      • PUT Movies
    • 查看所有Index
      • _cat/indices

分布式系统

分布式系统的可用性与扩展性

  • 高可用性
    • 服务可用性:允许有节点停止服务
    • 数据可用性:部分节点丢失,不会丢失数据
  • 可扩展性
    • 请求量提升 / 数据的不断增长 (将数据分布到所有节点上)

分布式特性

  • Elastcsearch的分布式架构的好处
    • 存储的水平扩容
    • 提高系统的可用性,部分节点停止服务,整个集群的服务不受影响
  • Elasticsearch的分布式架构

    • 不同的集群通过不同的名字来区分,默认名字“elasticsearch”
    • 通过配置文件修改,或者在命令行中 -E cluster.name=geektime进行设定
    • 一个集群可以有一个或者多个节点

      节点

  • 节点是一个Elasticsearch的实例

    • 本质上就是一个JAVA进程
    • 一台机器上可以运行多个Elasticsearch进程,但是生产环境一般建议一台机器上运行一个Elasticsearch实例
    • 每一个节点都有名字,通过配置文件配置,或者启动时间 -E node.name=node1指定
    • 每一个节点在启动之后,会分配一个UID,保存在data目录下

Master-eligible nodes和Master Node
图片.png
Data Node & Coordinating Node
图片.png
其他的节点类型
图片.png
配置节点类型
图片.png

分片

Primary Shard & Replica Shard
图片.png图片.png
分片的设定
图片.png
查看集群健康状态
图片.png
Demo
图片.png