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
}
}
}
}
查询流程
- 执行了一个 match 查询,该查询用于在 “title” 字段中匹配包含 “quick brown fox” 的文档。
- 由于在 “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字段的权重提升了两倍