Почему мой запрос диапазона меток времени ничего не возвращает - PullRequest
0 голосов
/ 09 апреля 2020

Я использую эластичный открытый дистрибутив для создания системы оповещения. Но у меня есть одна проблема с моим запросомasticsearch:

"search": {
                "indices": ["test_alert"],
                "query": {
                    "size": 3,
                    "aggregations": {},
                    "query": {
                        "bool": {
                            "filter": {
                                "range": {
                                    "@timestamp": {
                                        "gte": "now-1h",
                                        "lte": "now",
                                        "format": "epoch_second"
                                    }
                                }
                            }
                        }
                    }
                }
            }

Это запрос, который я использую в своем мониторе open-distro. Проблема в том, что now-1h не работает, я всегда получаю пустой результат. Я попытался с необработанными временными метками (чтобы соответствовать и получить результаты), и это работало хорошо. Я не понимаю, почему диапазон вообще не работает, когда я использую now-1h.

Вот мое отображение:

properties": {
    "timestamp": {
        "type": "date",
        "format": "epoch_second"
    },
    "value": {
        "type": "long"
    }
}

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 09 апреля 2020

Ваше сопоставление говорит timestamp, но ваш запрос имеет @timestamp. Два должны быть последовательно названы. Кстати, в @timestamp нет ничего особенного - это просто соглашение. Вы можете сделать range.gte now-1h для любых полей даты и времени.

Правильное отображение:

PUT test_alert
{
  "mappings": {
    "properties": {
      "@timestamp": {
        "type": "date",
        "format": "epoch_second"
      },
      "value": {
        "type": "long"
      }
    }
  }
}
...