Упорядоченные запросы запроса упорядочены максимальная дата
У меня есть такие данные:
Id GroupId UpdateDate
1 1 2013-11-15T12: 00: 00
2 1 2013-11-20T12: 00: 00
3 2 2013-12-01T12: 00: 00
4 2 2013-13-01T12: 00: 00
5 2 2013-11-01T12: 00: 00
6 3 2013-10-01T12: 00: 00
Как я могу написать запрос, чтобы вернуть отфильтрованный / сгруппированный список в максимальную группу foreDach UpdateDate? и окончательный список отсортирован по дате обновления.
Я ожидаю этот вывод:
Id GroupId UpdateDate
4 2 2013-13-01T12: 00: 00
2 1 2013-11-20T12: 00: 00
6 3 2013-10-01T12: 00: 00
Благодарю вас:)
1 ответ
Да, это возможно с asticsearch, но данные будут в формате JSON, который должен быть сведен в формате, который вы показываете выше. Вот как я это сделал, используя Marvel Sense
Данные по массовой загрузке:
POST myindex/mytype/_bulk
{"index":{}}
{"id":1,"GroupId":1,"UpdateDate":"2013-11-15T12:00:00"}
{"index":{}}
{"id":2,"GroupId":1,"UpdateDate":"2013-11-20T12:00:00"}
{"index":{}}
{"id":3,"GroupId":2,"UpdateDate":"2013-12-01T12:00:00"}
{"index":{}}
{"id":4,"GroupId":2,"UpdateDate":"2013-12-01T12:00:00"}
{"index":{}}
{"id":5,"GroupId":2,"UpdateDate":"2013-11-01T12:00:00"}
{"index":{}}
{"id":6,"GroupId":3,"UpdateDate":"2013-10-01T12:00:00"}
ПОЛУЧИТЬ макс по группе:
GET myindex/mytype/_search?search_type=count
{
"aggs": {
"NAME": {
"terms": {
"field": "GroupId"
},
"aggs": {
"NAME": {
"max": {
"field": "UpdateDate"
}
}
}
}
}
}
Выход:
{
...
"aggregations": {
"NAME": {
"buckets": [
{
"key": 2,
"doc_count": 3,
"NAME": {
"value": 1385899200000
}
},
{
"key": 1,
"doc_count": 2,
"NAME": {
"value": 1384948800000
}
},
{
"key": 3,
"doc_count": 1,
"NAME": {
"value": 1380628800000
}
}
]
}
}
...
}
Максимальная дата возвращается как время Linux, которое необходимо преобразовать обратно в читаемый формат даты.