目录
4.Elasticsearch索引数据多了怎么办,如何调优,部署?
5.说你们公司ES的集群架构,索引数据大小,分片有多少,以及一些调优手段 。
6.Elasticsearch是如何实现master选举的?
7. 详细描述一下 Elasticsearch 索引文档的过程。
9. Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?
11. 详细描述一下 Elasticsearch 更新和删除文档的过程。
12. 对于 GC 方面,在使用 Elasticsearch 时要注意什么?
13. Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?
14. 在并发情况下,Elasticsearch 如果保证读写一致?
17.能否列出与 Elasticsearch 有关的主要可用字段数据类型?
18.ElasticSearch中的集群、节点、索引、文档、类型是什么?
19. 在Elasticsearch中 cat API的功能是什么?
1.ES为什么那么快(ES的索引原理)?Elasticsearch查询速度为什么这么快? - 知乎这段时间在维护产品的搜索功能,每次在管理台看到 Elasticsearch 这么高效的查询效率我都很好奇他是如何做到的。 这甚至比在我本地使用 MySQL 通过主键的查询速度还快。 为此我搜索了相关资料: 这类问题网上很多…https://zhuanlan.zhihu.com/p/266116262
2.MongoDB和Elasticsearch区别
3.ES的倒排索引是什么?
传统的检索是通过文章,逐个遍历找到对应关键词的位置。
而倒排索引,是通过分词策略,形成了词和文章的映射关系表,这种
词典+映射表即为倒排索引
。
有了倒排索引,就能实现O(1)时间复杂度的效率检索文章了,极大的提高了检索效率。
学术的解答方式:
倒排索引,相反于一篇文章包含了哪些词,它从词出发,记载了这个词在哪些文档中出现过,由两部分组成——
词典和倒排表
。
加分项:倒排索引的
底层实现
是基于:
FST
(Finite State Transducer)
数据结构
。
lucene从4+版本后开始大量使用的数据结构是FST。
FST有两个优点
:
-
空间占用小。通过对词典中单词前缀和后缀的重复利用,压缩了存储空间;
-
查询速度快。O(len(str))的查询时间复杂度。
4.Elasticsearch索引数据多了怎么办,如何调优,部署?
索引数据的规划,应在前期做好规划,正所谓“
设计先行,编码在后
”,这样才能有效的避免突如其来的数据激增导致集群处理能力不足引发的线上客户检索或者其他业务受到影响。
调优策略:
1.动态索引层面:
基于模板+时间+rollover api滚动创建索引,举例:设计阶段定义:blog索引的模板格式为:blog_index_时间戳的形式,每天递增数据。
这样做的好处:不至于数据量激增导致单个索引数据量非常大,接近于上线2的32次幂-1,索引存储达到了TB+甚至更大。
一旦单个索引很大,存储等各种风险也随之而来,所以要提前考虑+及早避免。
2.
存储层面:
冷热数据分离
存储,热数据(比如最近3天或者一周的数据),其余为冷数据。对于冷数据不会再写入新数据,可以考虑定期 force_merge 加 shrink 压缩操作,节省存储空间和检索效率。
3.
部署层面
一旦之前没有规划,这里就属于应急策略。结合ES自身的支持动态扩展的特点,
动态新增机器
的方式可以缓解集群压力,注意:如果之前主节点等规划合理,不需要重启集群也能完成动态新增的。
5.说你们公司ES的集群架构,索引数据大小,分片有多少,以及一些调优手段 。
如实结合自己的实践场景回答即可。
比如:ES集群架构13个节点,索引根据通道不同共20+索引,根据日期,每日递增20+
索引:10分片,每日递增1亿+数据,每个通道每天索引大小控制:150GB之内。
仅索引层面调优手段:
5.1、设计阶段调优
1、根据业务增量需求,采取基于
日期模板<