1、安装ES https://www.elastic.co/cn/downloads/elasticsearch
2、安装ik分词器,注意要跟ES版本一致。Releases · medcl/elasticsearch-analysis-ik · GitHub
3、安装kibanaDownload Kibana Free | Get Started Now | Elastic
4、将es的config下的elasticsearch.yml文件打开
cluster.name、node.name、network.host: 0.0.0.0
添加
http.cors.enabled: true
http.cors.allow-origin: "*"
5、启动es下bin目录的elasticsearch.bat访问localhost:9200即可
6、结构
es全文检索包含了
index索引(shard)相当于数据库的表,存储document文档,shard有一个主踢多个副本,主体用于写,副本用于读,主体写完后同步到副本中。
document文档(segment)相当于数据库的行,每个行有个唯一的id
filed字段相当于数据库的列
数据类型:【
字符串类型:text和keyword,text用于保存内容、标题等多长的内容,keyword用于保存性别、类型等用于精准查询的数据。
数字类型、布尔类型等
】
7、数据采集原理
数据由客户端发送到es中,先经过shard,转入buffer内存缓冲区而不是segment,因为直接写segment效率低,最后写入translog日志文件中防止数据丢失。
数据没有直接写入segment,数据先进入buffer缓冲区,然后写入segment,最后清空buffer,循环直到写完,数据写到segment就表示建立好了倒排索引,可以被搜索到了。
日志文件太多,可以设置阈值,或者设置固定时间清理日志文件。
segment太多,es后台有一个merge程序,将小的segment合并成一个大的segment文件
8、创建索引库的全过程
1、数据采集进索引库时,会将不相关的词去掉,比如
“马上要过年了啊, Wish you a very happy new year 2022!”,
经过语言处理组件,英文如a之类会去掉,中文要、了、啊也会去掉,剩下的马上、过年、wish、you、very、happy、new、year、2022就是词了,这些词元会再次整合,如果有重复的会去掉,大写转小写,英文进行时过去时转为现在时如drove会转成drive,然后按照倒排索引组成链表。
每个链表包含了词+文档id,文档id指向文档document,在搜索的时候,输入wished跟过处理后相当于搜索的是wish词,wish词找到对应的文档id,在根据文档id查询对应的文档document,文档document相当于数据库的一行数据,而document文档中有filed字段,字段在实体类中用注解标识,标识该字段是否要进行分词,是否要索引,是否要存储,一般内容较多的不存储要索引要分词,where条件常用的都要进行分词、索引、存储。