Len's Study-Log

集中一点,登峰造极!

0%

Elasticsearch随笔--狂神

Elasticsearch随笔—狂神

概念理解:

索引:一个容器,类似于mysql中的表。

类型:索引中数据的映射类型。如整形,字符串,时间类型等。和表中的字段类型相似。

文档:类似mysql表中的一条记录

  • es就算是只有一个节点,ta也是一个集群!
  • 索引存储了映射类型的字段和其他设置。

工作原理:

创建一个索引,默认会创建5个分片(这里面会有一个主分片),每个主分片会有一个副本分片(复制分片)。

多个节点组成一个集群。es的节点上可以有多个索引。

es索引的主副分片会保存在不同的节点上,这样一个节点挂了,其他节点上的数据还能访问,这样系统也能正常运行下去。

es索引中的一个分片就是一个lucene索引,这个分片就是一个包含倒排索引的文件目录。

倒排索引的结构使得es在不扫描全表的情况下,告诉你,哪些文档有哪些关键字,要搜索某个词的时候,直接去到这个“倒排索引”里面匹配这个搜索词,就知道哪些文档包含了这个词,然后返回这些文档。

什么是倒排索引?

es使用的是【倒排索引】的数据结构,这种数据适用于快速的全文搜索,一个索引由文档中所有不重复的列表构成,对于每一个词,都有一个包含ta的文旦列表。列如,现在有两个文档,每个文档包含如下内容:

1
2
Study every day, good good up to forever 	# 文档1包含的内容
To Forever, study every day, goog goog up # 文档2包含的内容

为了创建倒排索引,我们首先要将每个文档拆分成独立的词(词条),然后创建一个包含所有不重复的词条的排序列表,然后列出每个词条出现在哪个文档:

term doc_1 doc_2
Study
To
every
forever
day
study
good
every
to
up

现在,我们试图搜索 to forever ,只需要查看包含每个词条的文档

term doc_1 doc_2
forever
to
统计➡ 2 1

两个文档都匹配,但是第一个文档比第二个匹配程度更高。如果没有别的条件,现在,这两个包含关键词的文档都将返回。