倒排索引的概念:首先我们最常见的索引是key/value形式,比如id=1,对应的title为"小米手机";ES采用倒排索引,也就是通过value去寻找key,比如我们有很多个标题,那么我们把标题中的词语一个个分开(叫做分词操作),“小米”这个词在1,3,4标题中都有,而“手环”只在4标题中有,这就是倒排索引。
elasticSearch搜索流程:
IK分词器:
作用:1.创建倒排索引时对文档分词 2.用户搜索时,对输入的内容分词
两种模式:1. ik_smart:智能切分,粗粒度 2.ik_max_word:最细切分,细粒度
拓展与停用词条:1.利用config目录的IkAnalyzer.cfg.xml文件添加拓展词典和停用词典
2.在词典中添加拓展词条或者停用词条
索引库操作:
索引库就类似数据库表,mapping映射就类似表的结构。
我们要向es中存储数据,必须先创建“库”和“表”。
* mapping映射属性:
mapping是对索引库中文档字段的约束,常见的mapping属性包括:
-
1.type:字段数据类型,常见的简单类型有:
-
字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)
-
数值:long、integer、short、byte、double、float、
-
布尔:boolean
-
日期:date
-
对象:object,有子属性,如学生对象,有名字年龄等子属性
-
-
2.index:是否创建索引,默认为true
-
3.analyzer:使用哪种分词器
-
4.properties:该字段的子字段
创建索引库和映射
相当于mysql中创建表和定义字段属性
只有字符串才需要考虑是否需要分词,需要什么分词器和是否是精确值,创建索引默认是true,所以不需要特意写出来。
修改索引库:
新增文档:
全量修改 :指对整个文档进行修改
增量修改 :对某个文档的某些字段进行修改