可以列出丢失数据的唯一ID的Elasticsearch查询

时间:2018-11-07 09:59:25

标签: elasticsearch kibana

我是Elasticsearch的新手,我真的需要一些帮助才能完成工作。

每个用户都有自己的唯一ID,例如; 111112,111113,111114。 每个用户都与一个用户类型Ex相连; AA,AB,AC,AD 每种用户类型都有一种或多种颜色,例如Ex;蓝色,红色,黑色。

我要实现的是列出用户类型AA中没有红色的那些Uniqie ID。

(列表中的UniqueID = * UserType = AA Missing = Red)

这可能吗?我知道一些基本查询,但是列出我遗漏的ID有点让我和我的知识感到困惑。

在SQL中使用“ Except”很容易,但是我无法找到如何在Elasticsearch中做到这一点。

1 个答案:

答案 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"
          }
        }
      ]
    }
  }
}