«сейчас» не работает при использовании запроса диапазона для поиска - PullRequest
0 голосов
/ 27 ноября 2018
{
"size": 0,
"query": {
    "range": {
        "LogTime": {
            "gte": "now-1d",
            "lte": "now",
            "include_lower": true,
            "include_upper": true,
            "boost": 1.0
        }
    }
},
"aggregations": {
    "top_aggs": {
        "date_histogram": {
            "field": "LogTime",
            "interval": "1h",
            "offset": 0,
            "order": {
                "_key": "asc"
            },
            "keyed": false,
            "min_doc_count": 0
        }
    }
}

}

Поле 'LogTime' имеет тип даты и имеет формат гггг-ММ-дд_чч: мм: сс.

Приведенный выше запрос состоит в получении некоторых журналов, которыемежду двумя датами (со вчерашнего дня до сегодняшнего дня)

Итак, я использовал дату по математике, сейчас-1d и сейчас.Однако ElasticSearch ничего не возвращает мне.

Результат:

{
  "took": 0,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 0,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
   "top_aggs": {
      "buckets": []
    }
  }
}

Если я укажу точное значение времени, например 2018-11-26_00: 00: 000 вместо now и now-1d, ElasticSearch предоставит информацию журнала.

Ответы [ 2 ]

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

Помимо usin now вы можете использовать DateTime.now (). GetMillis (), это даст вам текущую отметку времени, которая будет более точной.

И вычесть один день из нее,используйте:

DateTime.now().getMillis() - (24*60*60*1000)

Надеюсь, это будет полезно.

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

Используя Date Math, вы получаете вчерашнюю дату со временем выполнения запроса.Таким образом, если предположить, что текущая дата (т.е. now) равна 2018-11-27_08:38:10 now-1d, она не будет округлена до 2018-11-26_00:00:00.Используйте now-1d/d, чтобы округлить его.Чтобы узнать больше о том, как работает округление, обратитесь к этому .Таким образом, запрос должен быть:

{
"size": 0,
"query": {
    "range": {
        "LogTime": {
            "gte": "now-1d/d",
            "lte": "now/d",
            "boost": 1.0
        }
    }
}

Если предположить, что сейчас 2018-11-27_08:38:10, выше будет возвращать все записи даты 2018-11-26 и 2018-11-27

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