Как правильно установить сопоставление для даты и времени и как отфильтровать их в ElasticSearch? - PullRequest
0 голосов
/ 28 июня 2019

Поиск по дате не возвращает документы, которые действительно должны быть.Нет сообщений об ошибках.

Ниже представлены три jsons: отображение, запрос и первый найденный документ

{
  "hello_world_schedule_fields": {
    "mappings": {
      "properties": {
        "date": {
          "type": "date",
          "format": "YYYY-MM-DD"
        },
        "datetime": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "id": {
          "type": "long"
        },
        "is_free": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "price": {
          "type": "long"
        },
        "quest_id": {
          "type": "long"
        },
        "time": {
          "type": "date",
          "format": "HH:mm"
        }
      }
    }
  }
}
{
  "query":{
    "bool":{
      "filter":{
        "term":{
          "quest_id":722
        }
      },
      "must":{
        "range":{
          "date":{
            "lte":"2019-06-01"
          }
        }
      }
    }
  },
  "from":0,
  "size":9999
}
{
  "id":4836777,
  "quest_id":722,
  "datetime":"2019-06-24 10:15",
  "price":400,
  "is_free":"true",
  "created_at":null,
  "updated_at":null,
  "date":"2019-06-24",
  "time":"10:15"
}

Все найденные документы имеют quest_id: 722, но датынеправильно.Минимальная существующая дата в моем индексе - 2019-06-24, но я хочу найти даты меньше 2019-06-01, поэтому ничего не должно быть найдено.

1 Ответ

1 голос
/ 28 июня 2019

Ваш формат даты неправильный: он должен быть yyyy-MM-dd (т.е. строчные y и d)

  • D (прописные D) - это деньгода (не дня месяца)
  • Y (заглавная буква Y) - недельный год (не год)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...