在弹性搜索中的 should 子句查询中获得最高分



我有一个带有 should 子句的多匹配查询。查询的目的是获取包含 jdk 和/或 java 的所有结果。查询如下

{
"fields": [
    "id",
    "name"
],
"query": {
    "filtered": {
        "filter": {
            "bool": {
                "should": [
                    {
                        "term": {
                            "city": "12018206"
                        }
                    }
                ]
            }
        },
        "query": {
            "bool": {
                "should": [
                    {
                        "multi_match": {
                            "query": "jdk",
                            "fields": [
                                "name^6",
                                "description^3"
                            ],
                            "tie_breaker": 0.3,
                            "type": "best_fields",
                            "boost": 10
                        }
                    },
                    {
                        "multi_match": {
                            "query": "java",
                            "fields": [
                                "name^6",
                                "description^3"
                            ],
                            "tie_breaker": 0.3,
                            "type": "best_fields",
                            "boost": 10
                        }
                    }
                ]
            }
        }
    }
}}

此查询生成的最终分数是 should 子句中每个项目的分数的平均值。我想要的是应该子句中每个项目获得的最大分数。

任何人都可以告诉我我需要做出哪些更改。

谢谢

Dis Max Query应该有助于实现这一目标

例:

{ 
"fields": [
    "id",
    "name"
],
"query": {
    "filtered": {
        "filter": {
            "bool": {
                "should": [
                    {
                        "term": {
                            "city": "12018206"
                        }
                    }
                ]
            }
        },
        "query": {
            "dis_max": {
                "queries": [
                    {
                        "multi_match": {
                            "query": "jdk",
                            "fields": [
                                "name^6",
                                "description^3"
                            ],
                            "tie_breaker": 0.3,
                            "type": "best_fields",
                            "boost": 10
                        }
                    },
                    {
                        "multi_match": {
                            "query": "java",
                            "fields": [
                                "name^6",
                                "description^3"
                            ],
                            "tie_breaker": 0.3,
                            "type": "best_fields",
                            "boost": 10
                        }
                    }
                ]
            }
        }
    }
}
}

相关内容

  • 没有找到相关文章