elk面试题_ElasticSearch常见经典面试题

本文详述了Elasticsearch的使用原因、Master选举机制、处理脑裂问题的方法、索引、更新和删除文档的过程、搜索流程、大数据量聚合策略、并发情况下的读写一致性保证,以及核心概念如集群、节点、索引、文档和类型等。
摘要由CSDN通过智能技术生成

1.为什么要使用Elasticsearch?

​   因为在我们商城中的数据,将来会非常多,所以采用以往的模糊查询,模糊查询前置配置,会放弃索引,导致商品查询是全表扫面,在百万级别的数据库中,效率非常低下,而我们使用ES做一个全文索引,我们将经常查询的商品的某些字段,比如说商品名,描述、价格还有id这些字段我们放入我们索引库里,可以提高查询速度。

2.Elasticsearch是如何实现Master选举的?

Elasticsearch的选主是ZenDiscovery模块负责的,主要包含Ping(节点之间通过这个RPC来发现彼此)和Unicast(单播模块包含一个主机列表以控制哪些节点需要ping通)这两部分;

对所有可以成为master的节点(node.master: true)根据nodeId字典排序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第0位)节点,暂且认为它是master节点。

如果对某个节点的投票数达到一定的值(可以成为master节点数n/2+1)并且该节点自己也选举自己,那这个节点就是master。否则重新选举一直到满足上述条件。

补充:master节点的职责主要包括集群、节点和索引的管理,不负责文档级别的管理;data节点可以关闭http功能。

3.Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?

当集群master候选数量不小于3个时,可以通过设置最少投票通过数量(discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解决脑裂问题;

当候选数量为两个时,只能修改为唯一的一个master候选,其他作为data节点,避免脑裂问题。

4.详细描述一下Elasticsearch索引文档的过程。

协调节点默认使用文档ID参与计算(也支持通过routing),以便为路由提供合适的分片。

shard = hash(document_id) % (num_of_primary_shards)

当分片所在的节点接收到来自协调节点的请求后,会将请求写入到Memory Buffer,然后定时(默认是每隔1秒)写入到Filesystem Cache,这个从Momery Buffer到Filesystem   Cache的过程就叫做refresh;

当然在某些情况下,存在Momery Buffer和Filesystem Cache的数据可能会丢失

好的,以下是十道 ELK 相关的面试题和答案: 1. ELK 是什么?它包含哪些组件? ELK 是一个开源的日志管理平台,其名称由 Elasticsearch、Logstash 和 Kibana 三个组件的首字母组成。其中 Elasticsearch 是一个分布式的实时搜索和分析引擎,Logstash 是一个日志收集、过滤和转换工具,而 Kibana 则是一个数据可视化平台。 2. ELK 的主要优点是什么? ELK 的主要优点包括: - 快速:Elasticsearch 能够在大规模数据集上快速检索和分析数据。 - 灵活:ELK 可以根据需要进行定制,以满足不同的日志管理需求。 - 易于使用:ELK 的组件都具有友好的用户界面,方便用户进行操作和管理。 - 开源:ELK 是一个完全开源的项目,不需要额外的许可证费用。 3. 如何安装和配置 ELKELK 的安装和配置可以分为以下步骤: - 安装 Elasticsearch 和 Kibana。 - 安装 Logstash,并配置它来收集和过滤日志数据。 - 在 Kibana 中配置索引模式和可视化仪表板,以便用户可以通过 Web 界面查看和分析日志数据。 4. 如何在 ELK 中搜索和过滤数据? 在 ELK 中,可以使用 Elasticsearch 的查询语言来搜索和过滤数据。例如,以下查询可以在 Elasticsearch 中搜索所有包含“error”的日志事件: ``` GET /_search { "query": { "match": { "message": "error" } } } ``` 此外,还可以使用 Kibana 的搜索栏来进行搜索和过滤。 5. 如何在 ELK 中创建可视化仪表板? 在 Kibana 中,可以使用可视化工具来创建各种类型的可视化仪表板,包括图表、表格、地图等等。具体步骤如下: - 在 Kibana 中创建一个索引模式,以便 Kibana 能够识别要可视化的数据。 - 在 Kibana 中创建一个可视化对象,例如柱状图或饼图。 - 将可视化对象添加到仪表板中,并根据需要进行调整和配置。 6. 如何在 ELK 中处理大量数据? ELK 可以处理大量数据,主要是因为 Elasticsearch 是一个分布式的搜索和分析引擎,可以通过添加更多的节点来扩展其能力。此外,还可以通过优化 Elasticsearch 的配置参数来进一步提高其性能,例如调整分片大小和副本数量等。 7. ELK 如何处理日志数据的安全性? ELK 可以通过以下方式来处理日志数据的安全性: - 访问控制:可以配置 Elasticsearch 和 Kibana 的访问控制列表(ACL),以限制用户可以访问的数据和操作。 - 加密:可以使用 SSL/TLS 加密协议来保护数据传输的安全性。 - 审计:可以启用 Elasticsearch 的审计日志功能,以记录所有对数据的访问和操作。 8. 如何排查 ELK 中的性能问题? 在 ELK 中,可以通过以下方式来排查性能问题: - 监控:可以使用 Elasticsearch 的监控 API 来监控节点的性能和资源利用率。 - 日志:可以查看 Elasticsearch 和 Logstash 的日志文件,以了解是否存在错误或异常。 - 剖析:可以使用 Elasticsearch 的分析器来分析查询语句的性能瓶颈,并进行优化。 9. ELK 如何处理数据备份和恢复? ELK 可以通过以下方式来处理数据备份和恢复: - 快照:可以使用 Elasticsearch 的快照和还原功能来备份和恢复数据。 - 复制:可以使用 Elasticsearch 的副本功能来在多个节点之间复制数据,以提高数据的可靠性和可用性。 10. ELK 如何处理高可用性? ELK 可以通过以下方式来处理高可用性: - 集群:可以将 Elasticsearch 部署为一个集群,以提高数据的可靠性和可用性。 - 副本:可以使用 Elasticsearch 的副本功能来在多个节点之间复制数据,以提高数据的可用性。 - 负载均衡:可以使用负载均衡器来将查询请求分发到多个 Elasticsearch 节点上,以提高查询的吞吐量和响应时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值