ES索引库原理

 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条件常用的都要进行分词、索引、存储。

        

        

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值