Elasticsearch检索的原理

Elasticsearch是分布式搜索引擎,整个检索过程可以拆解为如下几个核心步骤

1)客户端发起请求。

2)在主节点或协调节点中,需要验证查询主体(query body)。Elasticsearch从客户端获取搜索请求并将其解析为结构化表示形式。此步骤涉及分析查询语法,提取相关术语和运算符,并将查询转换为Elasticsearch可以处理的格式。

3)选择要在查询中使用的索引,根据路由机制选择待检索的分片(主分片或者副本分片)。

当发出搜索请求时,Elasticsearch使用路由值来确定要搜索的分片。通过只搜索相关的分片,Elasticsearch可以显著提高搜索性能并减少需要处理的数据量。路由机制是搜索引擎设计的一个重要方面,有助于确保Elasticsearch在分布式环境中快速、高效地搜索和分析数据。

一个搜索请求必须询问待请求索引中的所有分片(主分片+副本分片),并与其中的某个分片进行匹配。也就是说,假设一个索引中有5个主分片,每个分片一个副本分片,则一共10个分片(5主分片+5副本分片),一次搜索请求会由5个分片来完成(这5个分片可能是主分片,也可能是副本分片)。也就是说,一次搜索请求只会命中所有分片中的一个。

上述机制会用到自适应副本选择(adaptive replica selection)策略。它是一个用于负载平衡的策略,可以适应不同的请求类型和当前系统状态的变化,并选择最佳的副本分片来响应请求。

举例来说,对于需要更多资源的请求,自适应副本选择策略可以选择资源更充足的副本分片,而对于需要更快响应的请求,它可以选择负载更轻的副本分片。

4)在数据节点中执行查询操作,以收集精准匹配结果或者满足条件的结果。

5)接收第四步的结果,在协调节点做结果整合,并计算相关性评分。检索到匹配文档后,Elasticsearch会计算每个文档的相关度评分。相关度分数反映了文档与搜索请求的匹配程度。

6)将结果返回给用户。Elasticsearch会根据相关度分数对结果进行排序,并将排名靠前的结果返回给用户。返回的结果数量可以由用户指定,结果可以分页展示以便进行导航。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值