是否可以进行这样的查询
"query": {
"filtered": {
"filter": {
"terms": {
"names": [
"Anna",
"Mark",
"Joe"
],
"execution" : "and"
}
}
}
}
使用"minimum_should_match": "2"
声明?
我知道我可以使用简单的查询(我已经尝试过,它有效)但我不需要计算得分。我的目标只是过滤包含2个值的文档。
分数通常会严重影响检索文档所需的时间吗?
使用此查询:
"query": {
"filtered": {
"filter": {
"terms": {
"names": [
"Anna",
"Mark",
"Joe"
],
"execution" : "and",
"minimum_should_match": "2"
}
}
}
}
我收到了这个错误:
QueryParsingException[[my_db] [terms] filter does not support [minimum_should_match]]
答案 0 :(得分:7)
最小匹配不是terms filter
的参数。如果这是您正在寻找的功能,我可能会像这样重写您的查询,以使用bool query
中包含的query filter
:
{
"filter": {
"query": {
"bool": {
"must": [
{
"term": {
"names": "Anna"
}
},
{
"term": {
"names": "Mark"
}
},
{
"term": {
"name": "Joe"
}
}
],
"minimum_number_should_match": 2
}
}
}
}
您将获得最接近所有三个匹配的文档,但查询也会将文档与三个术语中的两个完全匹配。 must
是隐式的。我们也没有计算分数,因为我们已将查询作为过滤器执行。