elasticsearch,filter,boolean-logic,scoring,Search,elasticsearch,Filter,Boolean Logic,Scoring" /> elasticsearch,filter,boolean-logic,scoring,Search,elasticsearch,Filter,Boolean Logic,Scoring" />

ElasticSearch:布尔查询评分问题

ElasticSearch:布尔查询评分问题,search,elasticsearch,filter,boolean-logic,scoring,Search,elasticsearch,Filter,Boolean Logic,Scoring,我有一个查询,它可能可以在所有字段中搜索由下面部分匹配的空格分隔的短语。此外,当“Joh”得分低于“John”或“johndo”得分低于“johndoe”时,评分也会如预期的那样起作用 POST /user/_search { "query": { "match": { "_all": { "query": "John Doe", "operator": "or",

我有一个查询,它可能可以在所有字段中搜索由下面部分匹配的空格分隔的短语。此外,当“Joh”得分低于“John”或“johndo”得分低于“johndoe”时,评分也会如预期的那样起作用

POST /user/_search
{
    "query": {
        "match": {
           "_all": {
               "query": "John Doe",
               "operator": "or",
               "fuzziness": 2,
               "prefix_length": 1
           }
        }
    }
}
我现在正试图在这个查询的顶部添加一个层,它将返回上面的结果,其中“state”字段必须是“California”。下面我的实现返回了所需的结果,但现在当找到匹配项时,评分具有名称score。例如,“Joh”其中state=“California”返回的分数与“johndoe”中state=“California”返回的分数相同。为什么评分不再正常工作?任何解决方案都将不胜感激

GET /user/_search
{

   "query": {
      "filtered": {
         "query": {
            "match": {
               "_all": {
                  "query": "John Doe",
                  "operator": "or"
               },
        "filter": {
            "bool": {
               "must": [
                  {
                     "term": {
                        "state": "California"
                     }
                  }
               ]
            }
         }

            }
         }
      }
   }
}

由于您正在应用筛选器,所有文档的分数都将相同。


您可能可以尝试使用

是否有一种方法,我可以在不进行筛选的情况下查询文档,以获得正确的分数结果,然后在结束查询后添加筛选器。也许这样,过滤器不会在查询之前执行,从而给出正确的结果?