Я пытаюсь отсортировать некоторые товары по дочерним узлам. У меня есть продукты, для каждого продукта есть дочерний узел "stock" (содержит productId (поле соединения), stockId, QuantityAvailable, amountReserved ...), может быть несколько дочерних узлов, и мне нужно суммировать количество продуктаAvailable из всех запасов и сортировать по ним , Но, как я узнал, запросы на упругость поиска для сортировки - сложная задача.
Я пытался найти в Google похожие проблемы, и все, что я получил от Google, - это использовать скрипт и фактор (см. Код ниже). Но я не знаю, как работать с этими решениями, в таком запросе. Это сложно, но если вы хорошо знаете ElasticSearch, я думаю, вы поймете эту проблему, увидев это краткое описание и мой код, который я начал писать из руководств Google:
SearchDescriptor<T> res = ...;
res.Sort(sort => {
foreach (var item in Order)
{
if (item.ColumnName == "quantity")
{
sort.Script(sc => sc
.Type("number")
.Ascending()
.Script(script => script
.Source("doc['stockQuantityAvailable'].value * params.factor")
.Params(p => p.Add("factor", 1.1))
)
);
}
else if(new[] { "productId", "vendorName", "productType", "name" }.Contains(item.ColumnName))
{
sort.Field(f =>
{
f.Field(new Field(item.ColumnName));
f.Order(item.Ascending ? SortOrder.Ascending : SortOrder.Descending);
return f;
});
}
}
return sort;
});