是否可以有这样的查询
"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]]
最佳答案
最小应匹配不是terms filter
的参数。如果这是您正在寻找的功能,我可能会像这样重写您的查询,以使用包装在 query filter
中的 bool query
:
{
"filter": {
"query": {
"bool": {
"should": [
{
"term": {
"names": "Anna"
}
},
{
"term": {
"names": "Mark"
}
},
{
"term": {
"name": "Joe"
}
}
],
"minimum_should_match": 2
}
}
}
}
您将获得最好完全匹配所有这三个词的文档,但查询也会将文档与三个词中的两个恰好匹配。 must
是隐含的 and。我们也不计算分数,因为我们已将查询作为过滤器执行。
关于elasticsearch - 最小值应匹配过滤查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32824588/