c# - 使用 NEST 使用弹性搜索对多种类型进行排序
问题描述
我正在使用带有 C# 的 NEST 6.0 并希望对多种类型应用排序。例如,我有两个索引,I1 和 I2 分别用于 T1 类型和 T2 类型。我有一个 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)
)
)
);
解决方案
根据 APIs 文档,我想下面的代码就是你想要的。
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)
)
)
);
推荐阅读
- c# - 在 IIS 上发布后 POST 响应不起作用
- node.js - 有没有办法在nodejs unix环境中使用“js-yaml”将一个YAML文件添加到另一个YAML文件
- sql - Replace 00 with varbinary type
- gtk - GtkApplicationWindow 子类“销毁”两次
- php - PHP替换动态变量
- angularjs-directive - ng-selected 所需的验证不适用于复选框
- mysql - 使用左连接和分组方式重命名查询中的重复结果
- azure - 在 Azure 中的 dockerised App Service 上运行“安装”命令
- regex - 为什么匹配对象 .Value 没有按预期工作?
- php - 通过 php 处理并发 puppeteer 请求