使用NEST通过Elastic搜索对多种类型进行排序

时间:2019-02-10 09:25:59

标签: c# elasticsearch

我正在将NEST 6.0与C#结合使用,并希望对多种类型进行排序。例如,我有两个索引,分别为类型T1和类型T2的I1和I2。我有一个API,可以返回两种类型的搜索结果,因此,结果中有一些T1记录,一些是T2类型。

现在,我想对字段CreatedDate进行排序,我该怎么做?两种类型都具有相同的列名和相同的类型。下面是我正在使用的查询,它可以正常工作,但没有排序条件。

await _client.SearchAsync<dynamic>(s => s
                    .AllIndices()
                    .Type(types)
                    .From(from)
                    .Size(pageSize)
                    .Query(q => q
                        .MultiMatch(m => m
                            .Query(searchText)
                            )
                    )
                );

1 个答案:

答案 0 :(得分:0)

基于API文档,我想下面的代码就是您想要的。

await _client.SearchAsync<dynamic>(s => s
                    .AllIndices()
                    .Type(types)
                    .From(from)
                    .Size(pageSize)
                    .Query(q => q
                        .MultiMatch(m => m
                            .Query(searchText)
                        )
                    )
                    .Sort(ss => ss                            
                        //.Descending(s => s.CreatedDate)
                        .Field(f => f
                           .Field(ff => ff.CreatedDate)
                           .Type("T1")
                           .Order(SortOrder.Descending)

                        )
                        .Field(f => f
                           .Field(ff => ff.CreatedDate)
                           .Type("T2")
                           .Order(SortOrder.Descending)
                        )
                    )
                );