面试题答案
一键面试策略设计思路
- 了解资源使用情况:通过 ElasticSearch 的监控 API 实时获取集群当前的资源使用情况,包括字节数、文档数量等。这有助于了解当前高并发读写下各数据单位的占用情况,为后续资源分配提供依据。
- 设定资源分配规则:根据业务需求,为不同类型的数据或索引设定存储资源分配的优先级。例如,对于重要业务数据的索引,给予更多的字节数和文档数量配额。
- 动态调整:由于高并发读写情况不断变化,需要根据实时监控数据动态调整资源分配。如果某个索引的读写突然增加,相应地增加其存储资源。
相关 API 组合使用
- 监控 API:
_cat/allocation
API 可以查看集群节点的磁盘分配情况,例如磁盘使用量、剩余量等,帮助了解字节级别的资源使用。_cat/count
API 用于获取索引的文档数量,通过对不同索引使用该 API,可以知晓每个索引的文档数量占用情况。
- 索引设置 API:
PUT /{index}/_settings
API 可以调整索引的相关设置,包括存储相关设置。例如,可以设置index.codec
来选择不同的压缩算法,影响数据存储的字节数。同时,可以通过设置index.max_result_window
来限制单个索引返回的文档数量,从一定程度上控制文档数量占用的资源。
- 分片和副本 API:
PUT /{index}/_settings
中也可以设置index.number_of_shards
和index.number_of_replicas
。合理调整分片数和副本数,对于字节级资源,更多的副本会占用更多磁盘空间;对于文档数量,合适的分片数有助于更高效地存储和检索文档。例如,对于读写非常频繁且数据量较大的索引,可以适当增加分片数提高并发处理能力,但要注意过多分片也会增加管理开销和资源占用。同时,根据数据重要性和性能需求,调整副本数。如果对数据可用性要求极高,可增加副本数,但要考虑磁盘空间的消耗。