Elasticsearch Query, который может перечислить уникальный идентификатор, который пропускает данные - PullRequest
0 голосов
/ 07 ноября 2018

Я новичок вasticsearch, и мне действительно нужна помощь, чтобы добиться цели.

Каждый пользователь имеет свой уникальный идентификатор, например; 111112,111113,111114. Каждый пользователь связан с типом пользователя, Ex; AA, AB, AC, AD И каждый тип пользователя имеет один или несколько цветов, например; Синий, Красный, Черный.

То, что я пытаюсь достичь, это список тех уникальных идентификаторов в пользовательском типе AA, которые не имеют красный цвет.

(список UniqueID = * UserType = AA отсутствует = красный)

Возможно ли это? Я знаю некоторые базовые вопросы, но перечисление идентификаторов, в которых что-то упущено, было немного сложным для меня и моих знаний.

Его легко в SQL с "Except", но я не могу узнать, как это сделать вasticsearch.

1 Ответ

0 голосов
/ 07 ноября 2018

Это, конечно, возможно. Запрос 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"
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...