MST
星途 面试题库

面试题:ElasticSearch中preference参数的常见中等难度应用场景

请描述在一个具有多个副本分片的ElasticSearch集群中,preference参数设置为 '_primary' 和 '_local' 时,查询请求分别会如何处理?这两种设置在哪些业务场景下会比较适用?
20.9万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

1. preference="_primary"

  • 查询请求处理方式:当 preference 参数设置为 _primary 时,Elasticsearch 会将查询请求优先发送到包含主分片的节点上进行处理。如果主分片不可用(例如所在节点故障),则请求会失败,因为它严格要求使用主分片进行查询。
  • 适用业务场景:适用于对数据一致性要求极高的场景,例如金融交易记录查询、关键业务数据审计等场景。在这些场景下,必须确保获取到最新且没有经过副本同步延迟的数据,主分片的数据总是最新的,能满足这种强一致性需求。

2. preference="_local"

  • 查询请求处理方式:当 preference 参数设置为 _local 时,Elasticsearch 会优先尝试在本地节点(发起请求的节点)上查找副本分片进行查询。如果本地节点没有所需的副本分片,则会从集群的其他节点获取数据。这种方式可以减少跨网络的数据传输,提高查询效率。
  • 适用业务场景:适用于对查询响应速度要求较高,对数据一致性要求相对没那么严格的场景,例如实时分析用户行为数据、网站热门内容展示等场景。在这些场景下,少量的数据延迟是可以接受的,而更快的查询响应速度对于用户体验更为重要,通过优先使用本地副本分片可以显著提升响应速度。