在 Elasticsearch 中搜索短语时应用不同的提升值?

Apply different boosting values when searching for phrase in Elasticsearch?

我想在 Elasticsearch 中搜索一个短语,例如 "personal tax date"。我希望返回的结果给术语"tax"更多的权重。

到目前为止,我知道如何提升整个索引或提升不同字段,但仍然不知道如何提升不同的术语?有帮助吗??

您可以使用 query_string 查询并使用 query string syntax 提升术语,如下所示:

{
  "query": {
    "query_string": {
      "query": "personal tax^2 date"
    }
  }
}

使用函数得分我们可以按字段提升

GET <index_name>/_search
{
    "query": {
        "function_score": {
           "query": {
            "query_string": {
               "query": "*personal tax date*",
               "fields": [
                "field_1",
                "field_2"
               ]
            }
            },
            "boost": "5",
               "functions": [
                          {
                  "filter": { "match": { "field": "tax" } },
                  "weight": 30
              },
              {
                  "filter": { "term": { "ent_name": "tax" } },
                  "weight": 25
              }
          ],
             "score_mode": "multiply",
            "boost_mode": "sum"
        }
    }