概念
什么是elastic stack(ELK)?
- 是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch
Beats ←采集数据
Logstash ← 处理/清洗数据
Elasticsearch ← 存储 + 搜索
Kibana ← 展示 + 分析
对比
mysql与elasticsearch的概念做一下对比:
| MySQL | Elasticsearch | 说明 |
|---|---|---|
| Table表 | Index索引 | 索引(index),就是文档的集合,类似数据库的表(table) |
| Row行 | Document文档 | 文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式 |
| Column列 | Field字段 | 字段(Field),就是JSON文档中的字段,类似数据库中的列(Column) |
| Schema表结构 | Mapping映射 | Mapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema) |
| SQL | DSL | DSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD |
Mapping
mapping是对索引库中文档的约束,常见的mapping属性包括:
- type:字段数据类型,常见的简单类型有:
- 字符串:text
- 精确值:keyword
- 数值:long、integer、short、byte、double、float、
- 布尔:boolean
- 日期:date
- 对象:object
- index:是否创建索引,默认为true,参与搜索就需要创建。
- analyzer:使用哪种分词器,只有text需要。
- properties:该字段的子字段,也就是嵌套时,加这个。
IK分词器模式
- ik_smart:智能切分,粗粒度
- ik_max_word:最细切分,细粒度
| 模式 | 分词结果 |
|---|---|
| ik_smart | ["上海", "自来水", "来自", "海上"] |
| ik_max_word | ["上海", "上海自来水", "自来水", "来自", "海上"] |