Эластичный фильтр диапазона дат поиска не работает

Контекст

У меня есть индекс с полем "дата", которое содержит даты. Мне нужен запрос elasticsearch, который возвращает записи, в которых дата больше определенного значения даты.

Проблема

Выполнение следующего запроса с возвратом фильтра диапазона не работает. Записи с более ранними датами возвращаются в наборе результатов.

{
  "size": 1000,
  "query": {
    "filtered": {
      "filter": {
        "range": {
          "date": {
            "gt": "2014-02-23T00:00:00"
          }
        }
      }
    }
  }
} 

Вопросы

  • Каков правильный запрос для извлечения данных, где дата больше определенного значения?
  • Если мой запрос синтаксически верен, есть ли что-то еще, что я могу проверить (например, тип данных поля на самом деле является датой)?
  • Как мне поступить с корнем, вызывающим это?
  • и т. д.

person Allan McLemore    schedule 15.09.2014    source источник


Ответы (2)


Решение

Вместо реализации отображения я придумал частичное решение. Я использовал Chrome для анализа части трафика Kibana. Я заметил, что Kibana передает фильтры даты как значения int. Итак, я преобразовал даты в целые числа, используя преобразование временных меток Unix, и теперь все работает. (Ссылка http://www.epochconverter.com/)

Что насчет картографии?

Я смотрел на сопоставления ранее. В моем индексе их нет. Кажется, я припоминаю, что читал, что сопоставления будут выведены для известных типов, которые имеют строгую согласованность.
Мои данные о датах согласованы: - нет пустых значений - даты перебрасываются из SQL в C#, в Elastic

Думаю, я мог бы реализовать сопоставление, но пока я использую преобразование эпохи, пока у меня не возникнет реальная необходимость сопоставить это по какой-то другой веской причине.

person Allan McLemore    schedule 16.09.2014

  • Ваш запрос синтаксически верен.
  • Используйте get mapping API, чтобы увидеть сопоставление документов:

    curl -XGET 'http://localhost:9200/twitter/_mapping/tweet'

  • Трудно сказать, что пошло не так. Вероятно, отображение поля date на самом деле не является типом даты.

person halfelf    schedule 16.09.2014