Elasticsearch(2) boost的使用

elasticsearch version: 7.10.1

boost介绍

在Elasticsearch中,boost是一个权重值,它可以应用于搜索查询的各个部分,以影响相关性评分。当对某个字段进行搜索时,如果给该字段分配更高的boost值,那么匹配到该字段的文档在搜索结果中的排名将会更高,也就是说,它的相关性得分会相对增加。

boost语法

创建索引时使用

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "boost": 2 
      },
      "content": {
        "type": "text"
      }
    }
  }
}

查询时使用

POST _search
{
  "query": {
    "match": {
      "title": {
        "query": "quick brown fox",
        "boost": 2
      }
    }
  }
}

查询流程

  1. 执行了一个 match 查询,该查询用于在 “title” 字段中匹配包含 “quick brown fox” 的文档。
  2. 由于在 “title” 字段的 match 查询中设置了 boost 参数为 2,匹配到的文档将获得更高的相关性分数。

案例

例题

假设我们有一个学术论文索引,其中包含两类字段:title(标题)和abstract(摘要)。我们希望在搜索时,如果关键词出现在标题中,该论文的相关性得分应高于只在摘要中出现关键词的情况

索引创建

PUT /papers
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "boost": 2.0   // 标题字段的权重设置为2,相对于摘要字段更重要
      },
      "abstract": {
        "type": "text"
      }
    }
  }
}

文档插入

POST /papers/_doc
{
  "title": "Elasticsearch: A Distributed Real-Time Search and Analytics Engine",
  "abstract": "This paper presents Elasticsearch, an open-source, distributed, RESTful search and analytics engine capable of solving a growing number of use cases."
}

POST /papers/_doc
{
  "title": "Advances in Information Retrieval Techniques",
  "abstract": "The paper discusses various aspects of information retrieval systems with a focus on Elasticsearch's role in modern IR."
}

查询语句

GET /papers/_search
{
  "query": {
    "multi_match": {
      "query": "Elasticsearch engine",
      "fields": ["title^2", "abstract"]  // 对于title字段应用了boost^2
    }
  }
}

title^2 表示对title字段应用了一个boost因子,这里的^2意味着我们将title字段的权重提升了两倍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值