У меня есть следующий контент ES, который в основном представляет собой список видео с вложенными идентификаторами видео для разных пользователей.
Мне нужно отсортировать список на основе даты updated_at для конкретного пользователя (дляНапример, 'B001').
{ "_index": "videos",
"_source": {
"id": 123456,
"short_title": "First good title",
"created_at": "2019-05-29T03:19:14",
"user_list": [
{
"user": "A001",
"video_id": "604214",
"updated_at": "2019-05-29T03:26:48"
},
{
"user": "B001",
"video_id": "762001",
"updated_at": "2019-05-29T06:27:56"
},
{
"user": "C001",
"video_id": "604218",
"updated_at": "2019-05-29T06:27:57"
}
]
}
},
{ "_index": "videos",
"_source": {
"id": 127456,
"short_title": "Second good title",
"created_at": "2019-05-29T04:19:14",
"user_list": [
{
"user": "B001",
"video_id": "216001",
"updated_at": "2019-05-29T06:26:58"
},
{
"user": "A001",
"video_id": "604218",
"updated_at": "2019-05-29T06:25:38"
},
{
"user": "C001",
"video_id": "626001",
"updated_at": "2019-05-29T06:25:42"
}
]
}
}
Я пробовал следующий запрос:
GET videos/_search
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "user_list",
"filter": {
"match": {
"user_list.user": "B001"
}
}
}
}
]
}
},
"from": 0,
"size": 10,
"sort": [
{
"user_list.updated_at": {
"order": "asc",
"nested_path": "user_list",
"nested_filter": {
"match": {
"user_list.user": "B001"
}
}
}
}
]
}
Но я не могу получить правильный заказ.
Ожидаемый заказ:
{ "_index": "videos",
"_source": {
"id": 127456,
"short_title": "Second good title",
"created_at": "2019-05-29T04:19:14",
"user_list": [
{
"user": "B001",
"video_id": "216001",
"updated_at": "2019-05-29T06:26:58"
},
{
"user": "A001",
"video_id": "604218",
"updated_at": "2019-05-29T06:25:38"
},
{
"user": "C001",
"video_id": "626001",
"updated_at": "2019-05-29T06:25:42"
}
]
}
},
{ "_index": "videos",
"_source": {
"id": 123456,
"short_title": "First good title",
"created_at": "2019-05-29T03:19:14",
"user_list": [
{
"user": "A001",
"video_id": "604214",
"updated_at": "2019-05-29T03:26:48"
},
{
"user": "B001",
"video_id": "762001",
"updated_at": "2019-05-29T06:27:56"
},
{
"user": "C001",
"video_id": "604218",
"updated_at": "2019-05-29T06:27:57"
}
]
}
}
Здесь видео с идентификатором "127456" идет первым в порядке, поскольку необходимо, чтобы пользователь "updated_at" пользователя B001 находился в порядке возрастания.
Чего мне не хватает в запросе?