ElasticSearch:布尔查询评分问题
我有一个查询,它可能可以在所有字段中搜索由下面部分匹配的空格分隔的短语。此外,当“Joh”得分低于“John”或“johndo”得分低于“johndoe”时,评分也会如预期的那样起作用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",
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"
}
}
]
}
}
}
}
}
}
}
由于您正在应用筛选器,所有文档的分数都将相同。
您可能可以尝试使用是否有一种方法,我可以在不进行筛选的情况下查询文档,以获得正确的分数结果,然后在结束查询后添加筛选器。也许这样,过滤器不会在查询之前执行,从而给出正确的结果?