问题描述
我正在使用 ElasticSearch nest Fluent DSL,但似乎无法弄清楚如何创建 .sort() 接受的排序列表。
我有一个数组,我想将它们转换为使用 nest,就像使用过滤器一样:
"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"
有什么想法吗?
我认为它会是这样的:
new List<Func<QueryContainerDescriptor,QueryContainer>>();
但是 .sort() 除了它。
谢谢
解决方法
想通了:
Func<SortDescriptor<dynamic>,IPromise<IList<ISort>>> sortList = st =>
{
if (queryBuilder.Sort != null)
{
foreach (var option in queryBuilder.Sort)
{
if (option.SortOrder == "ASC")
{
st.Ascending(option.Key);
}
else
{
st.Descending(option.Key);
}
}
}
else
{
st.Ascending(SortSpecialField.Score);
}
return st;
};
然后在查询中添加:
.Sort(sortList)