目录
一、什么是ES?
二、什么是elk?
三、什么是倒排索引?
四、正向索引和倒排索引的优缺点对比
五、mysql数据库和es的区别?
六、索引库(es中的数据库表)操作有哪些?
八、ES分片存储原理
一、什么是ES?
ES是一款强大的分布式搜索引擎,可以帮我们从海量数据中中快速找到需要的内容,也可以用于日志统计、分析、系统监控、滴滴打车、百度搜索答案、github搜索代码、elk(elastic stack)日志分析。等
二、什么是elk?
elk是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch
三、什么是倒排索引?
倒排索引的概念是基于MySQL这样的正向索引而言的。
正排索引:根据文档找词条的过程
倒排索引:根据词条找文档的过程,对比mysql正向索引原理,es的倒排索引是词条和文档id集合的映射关系,避免了全盘扫描,先查询到词条,再定位id,根据id查询数据库,查询速度比较快。**
倒排索引中有两个重要的概念:
文档(Document):用来搜索的数据,其中的每一行数据就是一个文档。例如一个网页、一个商品信息
词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:我是中国人,就可以分为:我、是、中国人、中国、国人这样的几个词条
索引:es中的索引可以理解为数据库中的一张表
倒排索引流程如下:
1.用户输入条件“华为手机”进行搜索
2.对用户输入内容进行分词,得到词条
3.拿着词条在倒排索引中查找,可以得到包含词条的文档id;1、2、3.
4.拿着文档id到正向索引种查找具体文档。
四、正向索引和倒排索引的优缺点对比
正向索引:
优点:可以给多个字段建立索引,根据索引字段搜索、排序速度非常快
缺点:根据非索引字段、或者索引字段中的部分词条查找时,只能全表扫描。
倒排索引:
优点:根据词条搜索、模糊查询时,速度非常快
缺点:只能给词条创建索引,而不是字段,而且无法根据字段做排序。
五、mysql数据库和es的区别?
Mysql:擅长事务类型操作,可以确保数据的安全和一致性--安全性高
Elasticsearch:擅长海量数据的搜索、分析、计算---查询速度更快
六、索引库(es中的数据库表)操作有哪些?
- 创建索引库:PUT /索引库名
- 查询索引库:GET /索引库名
- 删除索引库:DELETE /索引库名
- 添加字段:PUT /索引库名/_mapping
七、es中文档(1条数据)操作有哪些?
- 创建文档:POST /{索引库名}/_doc/文档id { json文档 }
- 查询文档:GET /{索引库名}/_doc/文档id
- 删除文档:DELETE /{索引库名}/_doc/文档id
- 修改文档:
- 全量修改:PUT /{索引库名}/_doc/文档id { json文档 }
- 增量修改:POST /{索引库名}/_update/文档id { "doc": {字段}}
八、ES分片存储原理
elasticsearch会通过hash算法来计算文档应该存储到哪个分片。