我有这样的查询:
{
"size": 4,
"query": {
"bool": {
"should": [{
"terms": { "property": ["iPhone earbuds", "iPhone 6 case"] }
}, {
"constant_score": {
"filter": { "match_all": {} },
"boost": 0
}
}],
"must_not": {
"ids": {
"values": ["doc 1", "doc 2"],
"boost": 0
}
},
"minimum_should_match": 1
}
},
"sort": []
}
一些空对象只是我构建查询JSON的工件,它们在大多数情况下都有意义,这只是我发现的最简单的例子。
为什么在得分= 0的情况下返回文档?我应该如何阻止这种情况发生?
答案 0 :(得分:0)
那将是
{
"constant_score": {
"filter": { "match_all": {} },
"boost": 0
}
}
匹配所有内容,对于此部分,得分为0;这也符合您的"minimum_should_match": 1
规则。
你可以进一步减少你的例子(我仍然不确定你想用这个查询实现什么):
PUT /test/test/1
{
"foo": "iphone"
}
PUT /test/test/2
{
"foo": "iphone earbuds"
}
PUT /test/test/3
{
"foo": "iphone case"
}
PUT /test/test/4
{
"foo": "bar"
}
POST /test/_search
{
"query": {
"bool": {
"should": [
{
"terms": { "foo": ["iphone"] }
}, {
"constant_score": {
"filter": { "match_all": {} },
"boost": 0
}
}
],
"minimum_should_match": 1
}
}
}
DELETE /test