我必须在elasticsearch中转换以下查询:
select * from index where observable not in (select observable from index where tags = 'whitelist')
我读到我应该在非过滤器中使用过滤器,但我不明白该怎么做。 谁能帮我? 感谢
编辑:
我必须得到除了那些带有“白名单”标签的所有标签,但我还要检查白名单中是否包含黑名单元素。
答案 0 :(得分:0)
您的SQL查询可以简化为:
select * from index where tags not in ('whitelist')
结果"对应" ES查询将是
curl -XPOST localhost:9200/index/_search -d '{
"query": {
"filtered": {
"filter": {
"bool": {
"must_not": {
"terms": {
"tags": [
"whitelist"
]
}
}
}
}
}
}
}'
或其他使用not
过滤器而不是bool/must_not
:
curl -XPOST localhost:9200/index/_search -d '{
"query": {
"filtered": {
"filter": {
"not": {
"terms": {
"tags": [
"whitelist"
]
}
}
}
}
}
}'