面试题答案
一键面试1. preference="_primary"
- 查询请求处理方式:当
preference
参数设置为_primary
时,Elasticsearch 会将查询请求优先发送到包含主分片的节点上进行处理。如果主分片不可用(例如所在节点故障),则请求会失败,因为它严格要求使用主分片进行查询。 - 适用业务场景:适用于对数据一致性要求极高的场景,例如金融交易记录查询、关键业务数据审计等场景。在这些场景下,必须确保获取到最新且没有经过副本同步延迟的数据,主分片的数据总是最新的,能满足这种强一致性需求。
2. preference="_local"
- 查询请求处理方式:当
preference
参数设置为_local
时,Elasticsearch 会优先尝试在本地节点(发起请求的节点)上查找副本分片进行查询。如果本地节点没有所需的副本分片,则会从集群的其他节点获取数据。这种方式可以减少跨网络的数据传输,提高查询效率。 - 适用业务场景:适用于对查询响应速度要求较高,对数据一致性要求相对没那么严格的场景,例如实时分析用户行为数据、网站热门内容展示等场景。在这些场景下,少量的数据延迟是可以接受的,而更快的查询响应速度对于用户体验更为重要,通过优先使用本地副本分片可以显著提升响应速度。