У меня есть массив объектов в моем индексе elasticsearch, например:
{
"group": "test_q",
"artifact_type": "dashboard",
"descriptions": [
{
"value": "original_description",
"created_at": "2010-06-07T12:54:52Z",
"created_by": "user_1"
},
{
"value": "edited_description",
"created_at": "2020-05-25T12:54:52Z",
"created_by": "user_2"
}
]
}
Каждый раз, когда описание обновляется, новый объект вставляется в массив описаний. Один из моих вариантов использования - всегда запрашивать самое последнее описание.
Моя идея заключалась в том, чтобы отсортировать массив по created_date в порядке убывания, выбрать первый и запросить его. Но как мне это сделать. Я относительно новичок в elasticsearch и не могу понять, может ли кто-нибудь помочь мне с образцом запроса.
Я использую elasti c search version 5.6
Заранее спасибо ?
Обновление: публикация сопоставлений полей, как указано в комментариях:
"properties": {
"descriptions": {
"type": "nested",
"properties": {
"created_at": {
"type": "date"
},
"created_by": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"value": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
Обновление: единственный способ, о котором я могу думать прямо сейчас, - это добавить «последнее» логическое поле во вложенное объект. Но должен быть способ получше.