我需要按几个字段过滤项目。每个字段必须等于value或不存在。可以使用以下代码来实现此过滤器,但是它不起作用:
new AuthUI.IdpConfig.GoogleBuilder().build()
是否可以实现类似的工作过滤器?
答案 0 :(得分:2)
要检查某个字段是否存在任何值,可以使用exists query。由于要求字段具有特定值或字段没有值(等于字段必须不存在),因此使用bool query的查询将如下所示:
{
"query": {
"bool": {
"filter": [
{
"term": {
"$parentId": 1111
}
},
{
"bool": {
"should": [
{
"term": {
"color.keyword": 111
}
},
{
"bool": {
"must_not": {
"exist": {
"field": "color.keyword"
}
}
}
}
]
}
},
{
"bool": {
"should": [
{
"term": {
"size.keyword": 111
}
},
{
"bool": {
"must_not": {
"exist": {
"field": "size.keyword"
}
}
}
}
]
}
}
]
}
}
}
这个想法是should
需要具有两个期望的条件-完全满足条件或字段不存在。 should
查询可确保从查询数组中至少匹配一个条件。