我是ES的新手。 我的数据 included_publishers 和 excluded_publishers 中有两个字段。这两个列表是互斥的。
我正在尝试建立一个查询,以检查included_publishers中是否存在值,或者excluded_publishers中不存在值,或者(included_publishers和excluded_publisher字段都不存在)
我正在尝试通过在应有的部分中结合must_not条件来实现这一目标:
{
"query": {
"bool": {
"should": [{
"match": {
"rights.included_publishers": "ABCD"
}
},
{
"bool": {
"must_not": [{
"exists": {
"field": "rights.included_publishers"
}
}, {
"exists": {
"field": "rights.excluded_publishers"
}
},
{
"match": {
"rights.excluded_publishers": "ABCD"
}
}
]
}
}
],
"minimum_should_match": 1
}
}
}
所有记录应在以下位置返回: ABCD存在于included_publishers列表中,或者include_publishers字段本身不存在。 ABCD在exclude_publishers列表中不存在,或者exclude_publishers字段本身不存在。
一旦我在第一个条件条件中用“ match”替换了“ term”,这个查询就会起作用(稍后进行编辑)。我得到正确的结果集。我不确定是否涵盖所有情况。