今日学习, ElasticSearch。
ElasticSearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。
ElasticSearch和Lucene
-
ElasticSearch底层是基于Lucene来实现的
-
Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目
-
Lucene的优势
- 易扩展
- 高性能(基于倒排索引)
-
Lucene的缺点
- 只限于Java语言开发
- 学习曲线陡峭
- 不支持水平扩展
倒排索引
-
倒排索引的概念是基于MySQL这样的正向索引而言的
-
正向索引
- 优点:可以给多个字段创建索引,根据索引字段搜索、排序速度非常快
- 缺点:根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描
-
倒排索引
- 优点:根据词条搜索、模糊搜索时,速度非常快
- 缺点:只能给词条创建索引,而不是字段,无法根据字段做排序
文档数据会被序列化为json格式后存储在ElasticSearch中,而Json文档中往往包含很多的字段(Field),类似于数据库中的列
DevTools
- kibana中提供了一个DevTools界面
- 编写DSL来操作ElasticSearch,并且有对DSL语句的自动补全功能
- IK分词器
ik_smart
:最少切分ik_max_word
:最细切分- 扩展词汇
索引库操作
- 索引库就类似于数据库表,mapping映射就类似表的结构
- 我们要向es中存储数据,必须先创建
库
和表
创建索引库和映射
-
基本语法
- 请求方式:
PUT
- 请求路径:
/{索引库名}
,可以自定义 - 请求参数:
mapping映射
- 请求方式:
查询索引库
-
基本语法
- 请求方式:
GET
- 请求路径:
/{索引库名}
- 请求参数:
无
- 请求方式:
修改索引库
-
基本语法
- 请求方式:
PUT
- 请求路径:
/{索引库名}/_mapping
- 请求参数:
mapping映射
- 请求方式:
删除索引库
-
基本语法:
- 请求方式:
DELETE
- 请求路径:
/{索引库名}
- 请求参数:无
DELETE /{索引库名}
- 请求方式:
文档操作
- POST新增文档
- 查询文档(GET)
- 删除文档(DELETE)
- 修改文档
- 全量修改:PUT /{索引库名}/_doc/{id}
- 增量修改:POST /{索引库名}/_update/{id}