elasticsearch Elasticsearch:获得精确匹配,然后是模糊匹配,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch Elasticsearch:获得精确匹配,然后是模糊匹配,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch Elasticsearch:获得精确匹配,然后是模糊匹配

elasticsearch Elasticsearch:获得精确匹配,然后是模糊匹配,elasticsearch,kibana,elasticsearch,Kibana,我运行以下查询: GET /thing/_search/? { "query": { "multi_match" : { "query": "castle pontivy", "type": "most_fields", "fields": [ "title", "loc" ] } } } 它工作并返回thing的结果,其中title和loc按相关顺序包含castle和/或pontivy。很好 现在我想继

我运行以下查询:

GET /thing/_search/?
{
  "query": {
    "multi_match" : {
      "query":      "castle pontivy",
      "type":       "most_fields",
      "fields":     [ "title", "loc" ]
    }
  }
}
它工作并返回
thing
的结果,其中
title
loc
按相关顺序包含
castle
和/或
pontivy
。很好

现在我想继续这样查询,但我也希望结果更符合
title
。这意味着,如果一个项目完全匹配其标题中的
castle pontivy
,则必须将其作为第一个元素返回(然后其他结果按常规处理)


有什么方法可以做到这一点吗?

你可以做一个
短语匹配,然后给它一个
提升
5分,所以不管默认分数是多少,它都会加上+5分。如果你想在得分方面获得更多,请仔细研究(我建议你应该)

第二个multi_match将使用
most_字段
匹配其余文档

{  
  "query":{  
    "bool":{  
      "should":[  
        {  
          "multi_match":{  
            "query":"castle pontivy",
            "type":"phrase",
            "fields":[  
              "title",
              "loc"
            ],
            "boost":5
          }
        },
        {  
          "multi_match":{  
            "query":"castle pontivy",
            "type":"most_fields",
            "fields":[  
              "title",
              "loc"
            ]
          }
        }
      ]
    }
  }
}

我们如何在这一点上增加模糊性?