1.elasticsearch解决的问题
传统的方式进行搜索的时候速度慢,搜索的精度不高
2.解决问题解决方案
通过倒排索引结构来实现。
传统的方式: 先找文档,再找内容 再匹配 速度慢
倒排索引:通过词找文档 直接找数据,速度快。
3.核心概念
索引 index ---> 数据库的库
类型 type ---> 数据库的表
文档 document ---> 数据库的表中的行
字段 Field ---> 数据库中的行的列
映射 Mapping ---> 列的限制(约束)
Field映射具体是如何映射的呢?4个属性
定义的数据类型是什么? 比如定义:某一个字段是一个文本类型(String),Integer,long float,,,
针对字段中,具体的映射的属性 是什么数据?是否分词?是否索引? 是否存储?分词器是什么?
+ 定义数据类型
+ 分词的目的 就是为了建立倒排索引(为了要索引)
+ 索引的目的 是为了快速搜索
+ 存储与否 看页面是否展示 es当中是否存储默认是false 它会讲数据存储到es中的一个_source中。
分词器:ik
是一个中文分词器:
1.分词效果优秀
2.扩展词汇
3.扩展停用词
ik分词器有两个分词策略:
+ ik_max_word
+ ik_smart (推荐)
ik分词器使用:
+ 下载相同版本的ik分词器
+ copy 到E:\104\elasticsearch-5.6.8\plugins 目录下
+ 解压 ,可以修改目录名便于理解
+ 重启es
配置ik 扩展词汇和扩展停用词
+ 创建一个扩展词词典后缀就是.dic
+ 里面编写内容 一行就是一个扩展词 保存一定要不带BOM的utf-8
+ 创建停用词词典 一行就是一个停用词 保存一定要不带BOM的utf-8
+ 在配置文件中进行配置ikAnalzyer.cfg.xml中配置扩展词典和停用词词典
(1)建立倒排的流程
(2)根据倒排查询数据流程
4.安装es-head插件
5.集群