1、什么是es:高扩展的分布全文检索引擎,底层基于Lucene并通过简单的restful api来隐藏了lucene的复杂性,可处理PB级的数据,版本采用6.4.2v springboot:2.0.1
2、Es是面向文档的:分为索引(index:相当于数据库必须小写)、类型(type相当于表)、文档(相当于数据)、field(相当于字段)
3、创建索引直接put请求9200端口后跟索引名直接创建
4、querystring查询时会对条件进行分词
5、查看指定分词器效果
6、Es集群:es集群节点没有限制大于两台就可集群,为了高性能、高可用可考虑三个以上节点
7、Es分片机制:默认一个索引分为五片,每个分片又有它对应的副本,集群条件下分片分布到集群环境中并且副本与其对应的分片不能在同一节点上,这样的作用在于高可用
8、集群配置:修改每台节点上的信息
9、es查询方式:
1)原生查询,构建查询语句
2)基于springdata提供的自定义查询及注解查询
10、倒排索引:倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key
Term(单词):一段文本经过分析器分析以后就会输出一串单词,这一个一个的就叫做Term(直译为:单词)
Term Dictionary(单词字典):顾名思义,它里面维护的是Term,可以理解为Term的集合
Term Index(单词索引):为了更快的找到某个单词,我们为单词建立索引
Posting List(倒排列表):倒排列表记录了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。(PS:实际的倒排列表中并不只是存了文档ID这么简单,还有一些其它的信息,比如:词频(Term出现的次数)、偏移量(offset)等,可以想象成是Python中的元组,或者Java中的对象)
在倒排索引中,通过Term索引可以找到Term在Term Dictionary中的位置,进而找到Posting List,有了倒排列表就可以根据ID找到文档了
11、es倒排索引基本原理:存储数据时es会将对应分词的字段进行存储索引,类似于B+tree索引,并将对应数据的id存储到定义的地址上