有没有办法在两次出现之间更改加法动作? 在布尔查询中

问题描述


我有下一个查询:
curl -X POST "localhost:9200/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "bool" : {

      "must" : 
        { "term" : 
          { "message" : 
            {
              "value": "message","boost": 2.0 
            }
          } 
        },"should" : 
        { "term" : 
          { "message" : 
            {
              "value": "message","boost": 2.0 
            }
          } 
        }
    
    }
  }
}
'

我从此响应中获得的_score_score的2倍(我得到的没有范围(must / should之一)) /> 我的问题是,是否有办法将操作更改为多个操作,而不是例如

-代替_score + _score我会得到_score * _score

解决方法

您可以使用function score query

一个工作示例(使用脚本分数):

_score将乘以_score

映射

PUT index
{
  "mappings": {
    "properties": {
      "message": {
        "type": "keyword"
      }
    }
  }
}

插入文档

POST index/_doc/1
{
  "message":"message"
}

POST index/_doc/2
{
  "message":"message"
}

没有script_score

的搜索查询
GET index/_search
{
  "query": {
    "function_score": {
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "message": {
                  "value": "message"
                }
              }
            }
          ],"should": [
            {
              "term": {
                "message": {
                  "value": "message"
                }
              }
            }
          ]
        }
      }
    }
  }
}

结果:

"hits" : [
      {
        "_index" : "index","_type" : "_doc","_id" : "3","_score" : 1.3862944,"_source" : {
          "message" : "message"
        }
      },{
        "_index" : "index","_id" : "4","_source" : {
          "message" : "message"
        }
      }
    ]

使用script_score

搜索查询
GET index/_search
{
  "query": {
    "function_score": {
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "message": {
                  "value": "message"
                }
              }
            }
          ],"should": [
            {
              "term": {
                "message": {
                  "value": "message"
                }
              }
            }
          ]
        }
      },"script_score": {
        "script": {
          "source": "_score"
        }
      }
    }
  }
}

结果

"hits" : [
      {
        "_index" : "index","_score" : 1.921812,"_source" : {
          "message" : "message"
        }
      }
    ]

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...