Elasticsearch.net Fluent DSL 添加排序列表

问题描述

我正在使用 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)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...