我有一个带有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子句中每个项目的得分平均值。我想要的是在should子句中每个项目获得的最大分数。
任何人都可以告诉我需要做出哪些改变。
由于
答案 0 :(得分:3)
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
}
}
]
}
}
}
}
}