1.为什么要使用Elasticsearch?
当我们在商城中使用搜索功能时,随着后期项目数据量的不断增大,如果我们继续使用以前数据库模糊查询的方式去查询数据,在百万数据量的情况下,效率非常低下;而Es是一种支持全文检索的框架,特点是可以实时存储和实时分析搜索引擎,并且当我们数据量很大的时候可以集群,所以我们使用搜索功能时,可以把商品常用的名称,价格,描述,id等信息存储到索引库中,查询的时候可以提高查询速度。
2.elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段
es 生产集群我们部署了 2台机器,每台机器是 6 核 64G 的,集群总内存是 128G。
我们 es 集群的日增量数据大概是 1000 万条,每天日增量数据大概是 200MB,每月增量数据大概是 3 亿,8G。
目前线上有 5个索引,每个索引的数据量大概是 10G,所以这个数据量之内,我们每个索引使用的是默认的5个shard(分片)。
调优手段一般是从三个方面去考虑的:
1.在设计阶段的时候 使用别名进行索引管理,每天凌晨定时对索引进行force_merge操作,针对合理的字段设置分词器
2.在写入的前,副本数设置为0并且禁用刷新机制,写入过程中,采用bulk批量写入;写入后恢复副本数和刷新间隔。
3,在查询的时候利用倒排索引机制,尽量使用keyword类型。
3、elasticsearch 的倒排索引是什么
我们传统的检索方式是通过遍历整篇文章,逐个比对找到对应的关键词位置,而倒排索引是通过分词策略,形成词和文章的关系映射表,这种词典+映射表的方式就是倒排索引,有点类似于我们以前使用的新华字典。倒排索引可极大的提高查询效率。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多