我有一堆文档的字段,如
user.userDatas.user_roles[1,2,3]
user.userDatas.user_roles[1,2,3,4,5]
user.userDatas.user_roles[1,3,4,5]
我必须确保所有的文档中都有值[1,2,3],否则返回的文档中没有三个值中的任何一个。在上面的示例中,它应该返回[1,3,4,5],因为其中缺少2。
我已经尝试过这个,但它只返回匹配的记录1,2,3,但我需要的记录没有任何这3.
{
"query": {
"bool": {
"filter": [
{
"term": {
"user.userDatas.user_roles": 1
}
},
{
"term": {
"user.userDatas.user_roles": 2
}
},
{
"term": {
"user.userDatas.user_roles": 3
}
}
]
}
}
}
1条答案
按热度按时间r3i60tvu1#
根据您的要求:
您需要所有文档都具有全部3个值,否则返回不具有这三个值中任何一个值的文档。
您可以使用
must
andmust_not
clause的组合,以达到您所需的结果。添加包含索引数据、搜索查询和搜索结果的工作示例
索引数据:
搜索查询:
搜寻结果: