目录:
(1)初始ES-安装IK分词器
(2)IK分词器的拓展和停用词典
(3)操作索引库-mapping属性
(4)操作索引库-创建索引库
(5)操作索引库-查询-删除-修改索引库
(6)文档操作-新增-查询-删除文档
(7)文档操作-修改文档
(1)初始ES-安装IK分词器
发现以英语进行分词可以,中文是一个一个的进行分词
换中文进行分词:还是一字一字的分,它没有办法去理解中文含义按内容分
标准分词:也是一样:
要想去分词中文就不能使用默认的分词器了, 我们需要它按词进行分 ,需要使用:
上次ES安装的定义的目录
查看数据卷的目录:
把解压的文件上传
重启容器:
它包含两种模式:先使用ik_smart:分词成功了:它分的粒度大,分词少
使用ik_max_word:进行分词 :它分的词语比ik_smart:分的词语更多
使用ik_smart分词少,被搜索到的概率比较低,它的好处是分的次少了,占用的内存空间就少了,将来我的内存中可以缓存更多的数据查询效率高
ik_max_word:分词较多,占用的内存空间较多,这是它的缺点
所以需要在内存占用搜索效率,被搜索到的概率之间做出选择
(2)IK分词器的拓展和停用词典
分词的底层一定有各种各样的字典,字典里面有各种各样的词语,当它分词的时候拿这些字去匹配,里面有没有这个词,证明它是一个词,字典中并不是包含所有的词语,比如流程的词语就没有
下面的搜索里面没有的词:传智教育、白嫖、奥利给等,进行了一个一个的分
怎么去字典拓展拓展,还有象’的’这样的词,没有意义不要它分词,还有一些敏感词汇,不要它出现,把它禁掉,那么我们分词器,能否实现字典的个性化设置?
这两个是文件名,然后再这个目录下创建ext.dic文件
扩展词汇:
禁用词汇:
重启一下ES:
重新在测试一下:出现了白嫖,传智教育,的这个词也没有显示
分词器分词是在:第一个给文档创建索引的时候,对文档个中的某个内容进行分词,给词条创建倒排索引
第二个是用户在搜索的时候进行分词,对用户输入的内容进行分词
(3)操作索引库-mapping属性
索引库就相当于表,索引库里面有文档,相当于数据库里面的一行一行的数据,数据库先创建表才能添加数据,ES里面也一样,先有索引库,才能往里面添加文档。创建一个个索引库,就想建表一样,如果想创建一个索引库,需要指定mapping映射,mapping是对文档的约束
先学习索引库的操作:
可以去官方查看mapping的常用属性
这里我们看几个常用的mapping属性
type:看一下这个字段需要不需要拆,需要拆的话用text,不需要拆的话用keyword
index:创建索引,默认是true 创建索引是字面意思,要不要创建倒排索引 ,然后就可以搜索了,没有倒排索引就没有办法搜索这个字段 在实际的开发过程中并不是所有的字段需要搜索,
不需要搜索的字段,把这个值设置为false
(4)操作索引库-创建索引库
创建索引库:案例:
(5)操作索引库-查询-删除-修改索引库
ES一般是不允许修改索引库的,如果你要去修改一个字段的话,就会导致我们原有的倒排索引失效,但是可以修改库添加新的字段
查看索引库:
添加新字段:
查询一下:成功添加: 如果你想修改这个字段,就会报错:
删除索引库:
查询一下:查询不到404
(6)文档操作-新增-查询-删除文档
插入文档:
查看一下添加的数据:_vesion:每次的写操作版本都会增加
删除文档:
删除之后,在查询:
(7)文档操作-修改文档
方式一:
它跟新增文档的写法相似,只是更换了请求方式 ,它会根据id查询查询出来删除旧数据,添加新数据
修改文档:修改文档的email字段
在查询一下:
当id不存在时,变成了新增数据
方式二:(增量修改)局部修改:局部修改字段
修改email:
查询一下: