У меня есть 3 миллионов элементов с этой структурой:Как отсортировать элементы по размеру массива в ElasticSearch?
{
"id": "some_id",
"title": "some_title",
"photos": [
{...},
{...},
...
]
}
Некоторые элементы могут иметь пустое photos
поле:
{
"id": "some_id",
"title": "some_title",
"photos": []
}
Я хочу, чтобы отсортировать по количеству фотографий, чтобы привести к элементам без фотографий были в конец списка.
У меня есть один рабочий раствор, но это очень медленно на 3 миллиона единиц:
GET myitems/_search
{
"filter": {
...some filters...
},
"sort": [
{
"_script": {
"script": "_source.photos.size()",
"type": "number",
"order": "desc"
}
}
]
}
Этот запрос выполняется 55 секунд. Как оптимизировать этот запрос?
Можно ли просто сохранить размер массива в отдельном поле? – Bertvan
Да, это может быть единственный вариант ^^. –
@Bertvan, это вызовет переиндексацию :( – acelot