es head 复合查询_【ES进阶】深入理解Elasticsearch检索评分score执行计划及逆向文档词频idf...

本文深入探讨Elasticsearch的评分机制,包括查询执行计划的开启与解析,重点讲解评分(score)的计算组成:boost、idf和tf。通过实例解析了每个组件的作用,如idf如何根据文档频率计算,tf如何反映词频比例,以及boost如何动态调整搜索权重。
摘要由CSDN通过智能技术生成

7db362e8fadbf342fce4b36d9278851c.png

在前面的课程中,通过搭建ELK相关的中间件,以及配置动态mapping结构用于存储我们需要检索的文档信息;

我们通过输入关键词进行分词检索然后ES默认通过评分的形式将数据排序好展示给我们,当文档评分越高,那么搜索的结果越靠前;如下图所示,我们通过百度搜索关键字"兔子李磊"得到的搜索结果

46f14029142f6ccab3b1649d32e66a06.png

可以看到,在上述搜索结果中,可以看到第一条记录中,由于兔子 和 李磊 两个关键词都出现了,排名相对靠前一点;我们暂时可以理解为上述第一条文章的搜索结果相对搜索评分较高,相关度较高;

上述的理论基于一些自我逻辑,那么在ES中,我们搜索的相关度评分,又是如何计算出来的呢;

我们通过ES的复合框搜索语句到结果展示,其展示规则默认就是根据相关度进行排序的,即默认根据score排序;

查询ES的执行计划

执行计划查询方式如下:

GET shopping/_search
{
  "explain": true, 
  "query": {
    "match": {
        "goodsInfoName": "苏泊尔"
    }
  }
}

在上述DSL语句中,开启explain即可开启ES的查询计划(类似于Mysql数据库的执行计划);

上述DSL语句在我本地的查询结果如下:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 3,
    "successful" : 3,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 24,
      "relation" : "eq"
    },
    "max_score" : 5.3067513,
    "hits" : [
      {
        "_shard" : "[shopping][1]",
        "_node" : "h665-yAdSzGgjxamBh5CjA",
        "_index" : "shopping",
        "_type" : "_doc",
        "_id" : "10976",
        "_score" : 5.3067513,
        "_source" : {
           "goodsInfoName" : "苏泊尔不锈钢压力锅高压锅YS22ED+苏泊尔保鲜盒饭盒便当盒330mlKB033AE1(银色)",
           "其他字段省略....."
        },
        "_explanation" : {
          "value" : 5.3067513,
          "description" : "weight(goodsInfoName:苏泊尔 in 328) [PerFieldSimilarity], result of:",
          "details" : [
            {
              "value" : 5.3067513,
            
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值