Работа с диапазонами даты в elasticsearch и symfony2
-
26-12-2019 - |
Вопрос
У меня есть стандартное поле DateTime в моем классе акций на основе доктрины:
/**
* @ORM\Column(type="datetime")
*/
private $occurring;
.
Это генерирует объект dateTime и работает как ожидалось. Но проблема возникает, когда этот объект интегрирован с Foselasticabundle. Из-за объектов DateTime не поддерживает метод __toString (), мне пришлось реструктурировать My Elastica Config с использованием свойств, так что команда заполнения заполнится:
mappings:
id: ~
occurring:
properties:
date: { type: date, format: "yyyy-MM-dd" }
.
Это заполняет дату правильно, но она загружает в формате Elasticsearch по умолчанию и игнорирует любые пользовательские форматирования.
Проблема заключается в том, что мои запросы диапазона на основе этой даты поля не возвращают ожидаемые результаты. Следующий фильтр ничего не возвращает, даже если в этом диапазоне есть элементы.
$filteredQuery = new Filtered(
$mainQuery,
new Range('occurring', array(
'gte' => '2013-11-18',
'lte' => '2014-11-18'
))
);
.
Полученный запрос при запуске непосредственно в elasticsearch через Curl возвращает одинаковые неверные результаты.
Я заметил, что изменение GTE PARAM к 2012 году вернул ожидаемые результаты в диапазоне дат 2013 года, поэтому мне интересно, если неверное форматирование даты вызывает обрезку или что-то подобное?
Есть идеи? Спасибо.
Решение
Я полагал это с помощью этого ответа: