ElasticSearch - function_score (weight具体实例)

本文通过实例详细讲解了ElasticSearch中function_score查询的使用,包括weight、filter、field_value_factor等加强函数的结合与分数计算方式,展示了如何调整文档评分贡献度和根据条件动态增强查询结果。
摘要由CSDN通过智能技术生成

阅读本文需要先了解function_score的相关知识,请看 ElasticSearch - function_score 简介


  • 先准备数据和索引,在ES插入三笔数据,其中language是keywork类型,like是integer类型(代表点赞量)

    { "language": "java", "like": 5 }
    { "language": "python", "like": 5 }
    { "language": "go", "like": 10 }
  • functions是一个数组,裡面放著的是将要被使用的加强函数列表,我们在裡面使用了3个filter去过滤数据,并且每个filter都设置了一个加强函数,并且还使用了一个会应用到所有文档的field_value_factor加强函数

    • 可以为列表裡的每个加强函数都指定一个filter,这样做的话,只有在文档满足此filter的要求,此filter的加强函数才会应用到文挡上,也可以不指定filter,这样的话此加强函数就会应用到全部的文挡上

    • 一个文档可以一次满足多条加强函数和多个filter,如果一次满足多个,那麽就会产生多个加强score

    • 因此ES会先使用score_mode定义的方式来合併这些加强score们,得到一个总加强score,得到总加强score之后,才会再使用boost_mode定义的方式去和old_score做合併

    GET 127.0.0.1/mytest/doc/_search
    {
       
        "query": {
       
            "function_score": {
       
                "query": {
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值