来源:极客时间elasticsearch课程
Elasticsearch的主要功能:
1.海量数据的分户式存储以及集群管理:服务与数据的高可用,水平扩展
2.近实搜索,性能卓越:结构化、全文、地理位置、自动完成
3.海量数据的近实时分析:聚合功能
新特性 5.X
基本概念
索引、文档 偏向开发人员视角,逻辑上的概念
节点、分片偏向运维人员,物理上的概念
文档
- Elasticsearch是面向文档的,文档是所有可搜索数据的最小单位
- 日志文件中的日志项
- 一本电影的具体信息 / 一张唱片的详细信息
- MP3播放器里的一首歌 / 一篇PDF文档中的具体内容
- 文档会背序列化成JSON格式,保存在Elasticsearch中
- JSON对象由字段组成
- 每个字段都有对应的字段类型(字符串 / 数值 / 布尔 / 日期 / 二进制 / 范围类型 )
- 每个文档都有一个Unique ID
- 可以指定ID
- 或者通过Elasticsearch自动生成
JSON文档
- 一篇文档包含了一系列的字段。类似数据库表中一条记录
- JSON文档,格式灵活,不需要预先定义格式
- 字段的类型可以指定或者通过Elasticsearch自动推算
- 支持数组 / 支持嵌套
如图,将CSV file转换为json格式的数据
文档的元数据
- 元数据,用于标注文档的相关信息
- _index:文档所属的索引名
- _type:文档所属的类型名
- _id:文档唯一ID
- _source:文档的原始JSON数据
- _all:整合所有字段内容到该字段,已被废除
- _version:文档的版本信息
- _score:相关性打分
索引
索引的不同语意
Type
- 在7.0之前,一个Index可以设置多个Types
- 6.0开始,Type已经被Deprecated。7.0开始,一个索引只能创建一个Type-“_doc”
传统关系型数据库和Elasticsearch的区别:
- Elasticsearch - Schemaless / 相关性 / 高性能全文检索
- RDMS - 事务性 / Join
REST API
一些基本的API
- Indices
- 创建Index
- PUT Movies
- 查看所有Index
- _cat/indices
- 创建Index
分布式系统
分布式系统的可用性与扩展性
- 高可用性
- 服务可用性:允许有节点停止服务
- 数据可用性:部分节点丢失,不会丢失数据
- 可扩展性
- 请求量提升 / 数据的不断增长 (将数据分布到所有节点上)
分布式特性
- Elastcsearch的分布式架构的好处
- 存储的水平扩容
- 提高系统的可用性,部分节点停止服务,整个集群的服务不受影响
Elasticsearch的分布式架构
节点是一个Elasticsearch的实例
- 本质上就是一个JAVA进程
- 一台机器上可以运行多个Elasticsearch进程,但是生产环境一般建议一台机器上运行一个Elasticsearch实例
- 每一个节点都有名字,通过配置文件配置,或者启动时间 -E node.name=node1指定
- 每一个节点在启动之后,会分配一个UID,保存在data目录下
Master-eligible nodes和Master Node
Data Node & Coordinating Node
其他的节点类型
配置节点类型
分片
Primary Shard & Replica Shard
分片的设定
查看集群健康状态
Demo