ElasticSearch话术

1、介绍一下ElasticSearch,以及在项目中的应用​

Java开发的基于lucene分布式全文搜索引擎。基于restful Web接口。在检索领域相当优秀,在我们项目中主要是负责检索商品信息。商品信息构成是比较复杂的,并且数据量巨大,至少会有几十万,如果使用mysql做检索,效率会非常低,并且对5/mysql造成很大的压力。
在使用过程中主要需要做几件事:
1、Es服务的安装,中文分词器使用IK分词器,这个主要是运维负责;
2、在项目中集成springDataElasticSearch框架,用来操作ES;
3、创建实体类,标注了一个Document注解,这个注解里声明了这个索引库的名称以及它的类型,还有他的分片儿信息,还有他的副本信息。在这个类中创建所有跟商品相关的字段。同样会有一些注解去标识他的数据类型,他的比如说id字段会有一个id注解,其他字段用@Field注解标注在es中存储的数据类型,是否进行分词等,有些字段也可以不加任何注解,es会根据存储的数据去判断字段在es中存储的类型。等其他的字段都建好之后,然后又新添加了一个统一的搜索字段,我们给它定义的名称叫all,我们会把经常搜索的数据全部定义到这个字段里。比方说商品标题、副标题、品牌等;
4、初始全量数据导入使用springboot测试类实现导入,分批从mysql中取出,组装数据到,保存到es中
5、修改、新增、删除等增量数据导入使用rabbitMQ实现,商品上下架的时候发送Mq消息,搜索微服务以及静态页面微服务实现ES数据的同步和静态页面的数据同步操作
6、使用es实现搜索使用all进行分词查询,搜索时,按照matchQuery做的,这个方法的做法是会把输入的关键词分词之后,然后去匹配,匹配的规则我们设置的是and的方式匹配,就是分词之后每个词条都匹配才算匹配,我们在项目里设置了个all字段,会把所有可能被分词的字段都会放到这个里边,只对这一个字段设置分词,关键字搜索的时候,都会去匹配这个字段,使用规格参数聚合实现商品搜索规格参数的渲染使用分类和品牌聚合实现商品分类和品牌查询的渲染使用布尔查询实现规格参数、品牌、分类的过滤实现分页、排序等需求

2、为什么使用Es?​

因为在我们商城中的数据,将来会非常多,所以采用以往的模糊查询,模糊查询前置配置,会放弃索引,导致商品查询是全表扫面,在百万级别的数据库中,效率非常低下,而我们使用ES做一个全文索引,我们将经常查询的商品的某些字段,比如说商品名,描述、价格还有id这些字段我们放入我们索引库里,es内部有个倒排索引的机制,普通的索引的原理是通过id寻找数据,而倒排索引是通过数据寻找id,它的大概原理是把需要分词的数据通过ik分词器分词之后,记录出每个词条对应的文档id,在进行搜索的时候,将搜索关键字分词之后,找到每个词条的文档id,然后在进行通过id搜索操作,大大提高了全文检索的效率,这也是在全文检索方面最常用的技术。

3、 什么是桶(bucket)?什么是度量(metrics)?​

	桶,是按照某种方式对数据进行分组,每一组数据在ES中称为一个桶,例如我们根据国籍对人划分,可以得到中国桶、英国桶,日本桶……或者我们按照年龄段对人进行划分:0~10,10~20,20~30,30~40等。分桶的方式有很多,比如按日期阶梯分组、按数值阶梯分组、按词条内容分组、按数值和日期范围分组等。​	度量,分组完成以后,我们一般会对组中的数据进行聚合运算,例如求平均值、最大、最小、求和等,这些在ES中称为度量。度量有求平均值、求最大最小值、求百分比、求和等。​	

4、es内部存储的存储结构

es内部默认就是分布式的存储结构,每当创建一个索引库的时候,我们需要指定当前索引库的分片数和副本数,分片数就是把数据分布式的存放在分片上,所有分片的数据加起来就是整个索引库的数据量,分片数越多,数据存放的越分散,搜索的时候,es会检索每个分片的伤的数据一起返回。副本数是指在数据进入索引库的时候,同时需要备份的数量,如果副本数量越多,那么需要消耗的存储空间就会越多,过多的话会造成空间浪费,一般生产中使用的时候都用的默认的配置,就是5个分片,2个副本。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值