我的请求使用的字词如下:
{
"query": {
"bool": {
"should": [
{
"terms": {
"subjects.id": [
1,
2,
3
], boost: 3
}
},
{
"terms": {
"qualification_type.id": [
3,
5
], boost: 2
}
}
]
}
}
我工作得很好,但是对于匹配三个主题的文档而不是仅匹配一个主题的文档,得分更高。
我的问题是:如果主题有一个或多个匹配,有没有办法强制得分相同?
提前致谢!
答案 0 :(得分:9)
您可以将术语查询转换为过滤器并将其包装到constant score query中。例如:
{
"query": {
"bool": {
"should": [{
"constant_score": {
"filter": {
"terms": {
"subjects.id": [1, 2, 3]
}
},
boost: 3
}
}, {
"constant_score": {
"filter": {
"terms": {
"qualification_type.id": [3, 5]
}
},
boost: 2
}
}]
}
}
}