2020 java Elasticsearch面试题及答案(最全版本持续更新)
前言
涵盖各大公司会问到的面试点,同时随着版本的升级,可能也会有一些面试题更新,也会同步保持更新,因为篇幅原因(其实是我懒,哈哈)所以列了一部分答案,所有的答案见下文,总共485页合计20个技术点,文末自取pdf.
discovery.zen.minimum_master_nodes;
第二步:比较:先判定是否具备 master 资格,具备候选主节点资格的优先返回;若两节点都为候选主节点,则 id 小的值会主节点。注意这里的 id 为 string 类型。
1shard = hash(_routing) % (num_of_primary_shards)
6、详细描述一下 elasticsearch 搜索的过程?
面试官: 想了解es集群的底层原理,不再只关注业务层面了.
解答:
前置前提:
1.只有候选主节点(master: true) 的节点才能成为主节点。
2.最小主节点数(min master. nodes)的目的是防止脑裂。
这个我看了各种网上分析的版本和源码分析的书籍,云里雾里.核对了-下代码,核心入口为findmaster, 选择主节点成功返回对应master,否则返回null.选举流程大致描述如下:
第一步:确认候选主节点数达标,elas ticsearch.yml设置的值.
discovery.zen.minimum_ master. nodes;
第二步:比较:先判定是否具备master资格,具备候选主节点资格的优先返回;若两节点都为候选主节虑,则id小的值会主节点。注意这里的id为string 类型。题外话:获取节点id的方法。
1get 1. cat/nodes?v&h-ip.port.heappercentheapmax.id,name 2ip port heappercent heapmax id name
9、elasticsearch 中的节点(比如共20个),其中的10个,选了一个master,另外10个选了另-个master,怎么办?
1.当集群master候选数量不小于3个时,可以通过设置最少投票通过数量(discovery.zen.minimum_ master_ nodes)超过所有候选节点一半以上来解决脑裂问题.
2、当候选数量为两个时,只能修改为唯一的一 -个master候选,其他作为data节点,避免脑裂问题.
10、详细描述-下elasticsearch更新和删除文档的过程。
1.删除和更新也都是写操作,但是elasticsearch中的文档是不可变的,因此不能被删除或者改动以展示其变更;
2.磁盘上的每个段都有一个相应的.del文件。当删除请求发送后,文档并没有真的被删除,而是在.del文件中被标记为删除。该文档依然能匹配查询,但是会在结果中被过滤掉。当段合并时,在.del文件中被标记为删除的文档将不会被写入新段.
3.在新的文档被创建时, elasticsearch会为该文档指定一个版本号, 当执行更新时,旧版本的文档在.del文件中被标记为删除,新版本的文档被索引到- .个新段.旧版本的文档依然能匹配查询,但是会在结果中被过滤掉.
11、是否了解字典树?
12、对于gc方面,在使用elasticsearch时要注意什么?
13、elasticsearch对于大数据量(上亿量级)的聚合如何实现?
14、在并发情况下,elasticsearch 如果保证读写-致?
15、如何监控elasticsearch集群状态?
16、介绍一下你们的个性化搜索方案?
推荐阅读
-
2020 java Redis面试题及答案(最全版本持续更新)
-
2020 java MySQL面试题及答案(最全版本持续更新)
-
2020 java Elasticsearch面试题及答案(最全版本持续更新)
-
2020 java Memcached面试题及答案(最全版本持续更新)
-
2020 java ZooKeeper 面试题及答案(最全版本持续更新)
-
2020 java Dubbo面试题及答案(最全版本持续更新)
-
java Linux面试题附pdf答案(最全版本持续更新)
-
java Spring Boot面试题附pdf答案(最全版本持续更新)
-
java spring面试题附pdf答案(最全版本持续更新)
-
java 微服务面试题附pdf答案(最全版本持续更新)