我有一个带有 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
}
}
]
}
}
}
}
}