Elasticsearch Query: выбор документов путем сравнения списков значений (golang) - PullRequest
0 голосов
/ 25 октября 2018

У меня есть тип документа, проиндексированный в ElasticSearch, с упрощенной структурой, которая выглядит следующим образом:

{
    id: "54"
    properties: ["nice", "green", "small", "dry"]
}

Теперь я хочу выбрать все документы в этом индексе, которые не содержит список заданных значений в поле properties.

Что-то вроде: SELECT * FROM index WHERE properties NOT CONTAINS ["red", "big", "scary"]

Как я могу реализовать это наasticsearch?(А мне кто-то знает, как я могу реализовать такой запрос на Голанге, я буду еще лучше :-))

Спасибо!

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете сопоставить эти документы из индекса, используя пункт bool.Это будет выглядеть примерно так:

{
    "bool": {
        "must_not": [
            { "term": { "properties": "red" }},
            { "term": { "properties": "big" }},
            { "term": { "properties": "scary" }}
         ]
    }
}

Запрос может быть таким:

{
  "filtered": {
    "query": {
      "match": { "id": "54" }
    },
    "filter":{
      "bool": {
        "must_not": [
            { "term": { "properties": "red" }},
            { "term": { "properties": "big" }},
            { "term": { "properties": "scary" }}
        ]
      }
    }
  }
}

Для получения дополнительной информации вы можете проверить эту ссылку: Отфильтрованный запрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...