Я пытаюсь построить граненый поиск, используя Elasticsearch-php 6.0, но мне трудно понять, как использовать агрегацию диапазона дат. Вот что я пытаюсь сделать:
Образец картирования:
"mappings": {
"_doc": {
"properties": {
...
"timeframe": {
"properties": {
"gte": {
"type": "date",
"format": "yyyy"},
"lte": {
"type": "date",
"format": "yyyy"}
}
}
...
В моем документе у меня есть это свойство:
"timeframe":[{"gte":"1701","lte":"1800"}]
Я хочу иметь возможность отображать фасет с ползунком диапазона дат, где пользователь может ввести диапазон (минимальное значение — максимальное значение). В идеале, эти минимальные и максимальные значения должны возвращаться агрегацией Elasticsearch автоматически с учетом текущего запроса.
Вот агрегация, которую я пытаюсь написать в «псевдокоде», чтобы дать вам представление:
"aggs": {
"date_range": {
"field": "timeframe",
"format": "yyyy",
"ranges": [{
"from": min(timeframe.gte),
"to": max(timeframe.lte)
}]
}
}
Я думаю, что мне нужно использовать агрегирование диапазона дат, агрегацию мин / макс и конвейер агрегацию, но чем больше я о них читаю, тем больше я запутался. Я не могу найти, как склеить весь этот мир.
Имейте в виду, что я могу изменить отображение и / или структуру документа, если это не правильный способ достижения этого.
Спасибо !
Задача ещё не решена.
Других решений пока нет …