我们有一个多租户索引,只需要对单个租户的索引执行查询。基本上,对于与筛选器匹配的所有文档,返回与以下查询匹配的所有文档,但不包括仅与筛选器匹配的文档。
例如,假设我们有这样一个文档列表:
{ _id: 1, account_id: 1, name: "Foo" }
{ _id: 2, account_id: 2, name: "Bar" }
{ _id: 3, account_id: 2, name: "Foo" }
我原以为这个查询可以用,但实际上不行:
{
"bool": {
"filter": { "term": { "account_id": 2 } },
"should": [
{ "match": { "name": "Foo" }
]
}
}
它返回两个匹配的文档 account_id: 2
:
{ _id: 3, account_id: 2, name: "Foo", score: 1.111 }
{ _id: 2, account_id: 2, name: "Bar", score: 0.0 }
我真正想要的只是归还文件 _id: 3
,这基本上是“在帐户id等于2的所有文档中,只返回名称与foo匹配的文档”。
如何使用es 6.2实现这一点?需要注意的是 should
以及 must
比赛条件并不总是已知的,我真的想避免使用 minimum_should_match
.
1条答案
按热度按时间9lowa7mx1#
试试这个:简单地替换
should
由must
: