[ES]基础

03-初识ES-倒排索引_哔哩哔哩_bilibili

一、正排索引和倒排索引

1、ES采用倒排索引

1)文档(document):每条数据就是一个文档,在mysql中一个文档就是一条数据,在网页中,一个文档就是一个网页

2)词条(term):文档按照语义分成的词语(中文的话按照中文的词分、英语按照英文分)

3)存储过程:将文档从第一行开始,一行一行的进行分词,存成两个字段:词条和文档id,出现过的词条只要追加文档id即可。词条是唯一的,绝对不会重复,然后为词条创建索引。

4)查询过程:搜索华为手机,先对用户输入的内容进行分词,拿着词条去倒排索引中进行查询,因为所有的词条都已经建立索引,所以查询速度很快。查询"华为"得到文档id2和3,查询手机得到文档id1和2,因此可知道2号文档两个词条都包含。1和3文档只包含一个词。之后拿着id去查询文档。将文档放到结果集中。

查询一共进行了两次检索:第一次根据用户输入的词条去词条列表找到对应的文档id,第二次拿着文档id找文档。但每次都经过索引进行查询,查询效率比较高。

[ES]基础_第1张图片

5)正向索引与倒排索引

正向索引一行一行的从上到下遍历文档,通过文档中找词。

倒排索引先找到词条对应的id,再去找文档,是通过词找文档。

 二、ES和MySQL的对比

1、格式不同:ES的每行数据以json串的格式进行存储。

2、索引(index):相同类型的文档的集合。相当于MySQL中的表。

3、映射(mapping):索引中文档的字段约束信息,类似表中字段和字段的数据类型。

[ES]基础_第2张图片

4、MySQL和ES的对比

[ES]基础_第3张图片

 

 三、安装

参考Mac Docker安装es、kibana、IK_右京先生的博客-CSDN博客 

修改es版本为7.12.1

ES容器id:d766bcdea0cbce04f80525207160233eeabdee723a2b7f719f6afd5487a2591c

"IPAddress": "172.17.0.2"

docker pull elasticsearch:7.12.1 这个已经运行了

docker pull kibana:7.6.2 这个还没运行 要看一下黑马的版本

https://www.bilibili.com/video/BV1b8411Z7w5?p=5

你可能感兴趣的:(ES,elasticsearch,大数据,搜索引擎)