elasticsearch boost提权

             项目使用elasticsearch同时搜索多个内容,需要区分优先级,故需要对优先级高部分做提权,提权分为2类:

match提权:

{
    "size":10,
    "_source":[
        "aa",
        "bb",
        "cc",
        "dd"
    ],
    "query":{
        "bool":{
            "should":[
                {
                    "match":{
                        "aa":{                                   --match提权字段
                            "boost":10,                      --match提权部分
                            "query":"金属"                 --match提权格式
                        }
                    }
                },
                {
                    "match":{
                        "bb":"金属"
                    }
                }
            ],
            "filter":{
                "bool":{
                    "should":[
                        {
                            "term":{
                                "id":586
                            }
                        }
                    ],
                    "minimum_should_match":1
                }
            },
            "minimum_should_match":1
        }
    },
    "highlight":{
        "fields":{
            "aa":{

            },
            "bb":{

            }
        }
    },
    "from":0
}

term提权:

{
    "size":10,
    "_source":[
        "aa",
        "bb",
        "cc"
    ],
    "query":{
        "bool":{
            "should":[
                {
                    "term":{
                        "aa":{                           --term提权字段
                            "boost":10,              --term提权部分
                            "value":"时间"          --term提权格式
                        }
                    }
                },
                {
                    "match":{
                        "bb":"时间"
                    }
                }
            ],
            "minimum_should_match":1
        }
    },
    "highlight":{
        "fields":{
            "aa":{
            },
            "bb":{
            }
        }
    },
    "from":0
}

### 关于ElasticSearch中`boost`参数的解析 #### `boost`参数的作用范围与定义 在Elasticsearch中,`boost`参数用于调整特定字段或查询子句的重要性程度。该参数可以应用于映射配置阶段以及实际执行查询的过程中[^2]。 #### 映射中的`boost`设置 当在创建索引时指定字段级别的`boost`值,这会影响后续对该字段进行匹配操作时所赋予的相关性得分。例如,在建立索引模式时设定某个文本字段具有较高的重,则意味着任何涉及这个字段的内容将会得到更高的评分倾向。不过需要注意的是自5.0版本之后,这种预先设定的影响仅限于检索时刻而非存储期间计算得出的结果[^4]。 ```json PUT myindex { "mappings": { "_doc": { "properties": { "important_field": { "type": "text", "boost": 2.0 } } } } } ``` #### 查询过程中的动态增强 除了静态地为某些字段分配固定的增益外,还可以灵活地利用`boost`选项来临时高某次具体搜索请求里目标关键词或其他条件下的优先级。这种方式允许用户根据实际情况即时改变结果集排序逻辑而无需修改底层结构设计[^3]。 ```json GET /_search { "query": { "bool": { "should": [ { "match": { "title": { "query": "quick brown fox", "boost": 1.5 }}}, { "match": { "content": { "query": "lazy dog", "boost": 2.0 }}} ] } } } ``` 上述例子展示了如何在同一布尔组合内给予不同部分不同程度的关注度;对于标题中含有“quick brown fox”的文档来说其基础分数会被乘以1.5倍因子,而对于正文及了“lazy dog”的条目则享受双倍加分待遇。 #### 对最终评分机制的具体影响 无论是在索引构建还是实时查找环节应用`boost`调节手段,目的都是为了让搜索引擎能够更好地理解业务意图并据此优化返回列表顺序。通过适当调配各要素之间的相对重要性比例,从而实现更精准的信息发现体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值