Как сделать запрос, используя диапазон и соответствие в условии must? - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь получить данные за последние 24 часа, учитывая значение, которое должно соответствовать полю. Я написал запросы, соответствующие значению поля и запросам за последние 24 часа, но не могу понять, как их объединить.

Запрос за последние 24 часа:

{
  "_source": ["instance_name", "@timestamp"], 
  "query": {
    "range": {
      "sampletime": {
        "gte": "now-24h",
        "lte": "now"
      }
    }
  }
}

Запрос на сопоставление поля:

{
  "_source": ["instance_name", "@timestamp"], 
  "query": {
    "match": {
      "instance_name": "value_to_search"
    }
  }
}

Попытка объединить оба:

{
  "_source": ["instance_name", "@timestamp"], 
  "query": {
    "bool": {
      "must": [{
        "match": {
          "instance_name": "value"
        },
        "range": {
          "sampletime": {
            "gte": "now-24h",
            "lte": "now"
            }
          }
      }]
    }
  }
}

Можно ли как-то объединить их? Также можно указывать несколько значений в одном и том же поле.

instance_name == x || instance_name == y || instance_name == z

1 Ответ

1 голос
/ 15 октября 2019

Ваша попытка очень близка. Форматирование вокруг запроса range слегка отключено.

Вот исправленный пример:

{
  "_source": ["instance_name", "@timestamp"], 
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "instance_name": "value"
          }
        },
        {
        "range": {
          "sampletime": {
            "gte": "now-24h",
            "lte": "now"
            }
          }
        }
      ]
    }
  }
}

По второму вопросу оператор or будет использоваться по умолчанию для всехзапросы на совпадение.

Например, FIELD будет сопоставлять все попадания с a or b or c:

{
  "query": {
    "match": {
      "FIELD": "a b c"
    }
  }
}

Подробнее о полных параметрах запросов на совпадение можно узнать в официальная документация

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