Запрос диапазона Elasticsearch не работает должным образом - PullRequest
1 голос
/ 10 июня 2019

Я пытаюсь получить данные, применяя диапазон к полю типа даты (в данном случае «timeA»).

Мой запрос:

{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "name": "A"
          }
        },
        {
          "range": {
            "timeA": {
              "lte": 9999
            }
          }
        }
      ]
    }
  }
}

У меня нет данных меньше 1558891800000 за время, поданных.

ТАК, ожидаемый результат должен быть:

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

Но фактический результат, который я получаю:

{
  "took": 0,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 1.287682,
    "hits": [
      {
        "_index": "checktimestamp",
        "_type": "doc",
        "_id": "AWr4sdJv_fFf5JZrQhXl",
        "_score": 1.287682,
        "_source": {
          "name": "A",
          "timeA": 1558899000000,
          "timeLocal": "27-1AM"
        }
      }
    ]
  }
}

Поле типа TimeA - это дата. Моя версияasticsearch - 5.6.10, а версия Kibana - 5.6.10.

Пожалуйста, предложите, в чем здесь проблема и как я могу ее решить. Заранее спасибо.

1 Ответ

2 голосов
/ 10 июня 2019

Elastic анализирует 4 цифры как год, что означает, что он соответствует документам с годом, меньшим или равным 9999, который, как я полагаю, является всеми вашими данными.

Чтобы избежать этого, вам нужно определить в своем отображении строгий формат для поля даты, теперь это позволит использовать формат "гггг". или же не используйте числа с менее чем 5 цифрами в этих запросах.

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