Создание запроса в Elasticsearch API

Необходимо выполнить запрос в Elasticsearch за определенный период с определенным параметром ключ:значение. Делаю так:

"query": {
        "range": {
                "@timestamp": {
                        "gte": "now-30m",
                        "lt": "now"
                }
        },
        "match": { "host" : "xxx" }
}

на что получаю в ответ: "reason": "[range] malformed query, expected [END_OBJECT] but found [FIELD_NAME]"

Если использовать "match" внутри "bool", то запрос проходит, но я получаю все результаты, даже если они не совпадают с "key":"value"

Можно ли как-то использовать "match" вместе с "range", чтоб я получил только те результаты, которые ищу и за определенный период?


Ответы (1 шт):

Автор решения: vovagib
"query": {
        "bool": {
                "must": [
                {
                        "match": { "host" : "xxx" }
                },
                {
                        "range": {
                                "@timestamp": {
                                        "gte": "now-30m",
                                        "lt": "now"
                                }
                        }
                }
                ]
        }
}

Данный запрос позволяет найти все записи за последние полчаса только с указанным [ключ]:[значение]

→ Ссылка