我是Elasticsearch的新手,我真的需要一些帮助才能完成工作。
每个用户都有自己的唯一ID,例如; 111112,111113,111114。 每个用户都与一个用户类型Ex相连; AA,AB,AC,AD 每种用户类型都有一种或多种颜色,例如Ex;蓝色,红色,黑色。
我要实现的是列出用户类型AA中没有红色的那些Uniqie ID。
(列表中的UniqueID = * UserType = AA Missing = Red)
这可能吗?我知道一些基本查询,但是列出我遗漏的ID有点让我和我的知识感到困惑。
在SQL中使用“ Except”很容易,但是我无法找到如何在Elasticsearch中做到这一点。
答案 0 :(得分:1)
这肯定是可能的。如果您玩了一点,查询dsl实际上并不是很难理解。
PUT tmp
{
"mappings": {
"_doc": {
"properties": {
"uid": {
"type": "keyword"
},
"type": {
"type": "keyword"
},
"colors": {
"type": "keyword"
}
}
}
}
}
POST tmp/_doc/1
{
"uid": "alpha",
"type": "AA",
"colors": [
"red",
"green"
]
}
POST tmp/_doc/2
{
"uid": "bravo",
"type": "AA",
"colors": [
"blue"
]
}
GET tmp/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"type": "AA"
}
}
],
"must_not": [
{
"term": {
"colors": "red"
}
}
]
}
}
}