【发布时间】:2014-11-06 17:28:33
【问题描述】:
我在弹性搜索中有一些文档具有以下映射(简化)
{
"primaryRecord": {
"orderTrades": {
"type" : "nested",
"include_in_parent":true,
"properties" : {
"materialDates": {"type" : "date", "index" : "not_analyzed", "include_in_all" : "false"},
}
}
}
}
现在 - 我正在查询基于日期范围与 materialDates 字段(实际上是索引上的日期列表)的结果 - 这一切都很好。我无法根据列表日期中的匹配结果对结果进行排序,例如:
范围查询:2014 年 7 月 7 日 - 2014 年 7 月 14 日
示例文档
{
orderTrades: [
{
materialDates: [3/13/2013, 7/10/2014, 8/10/2014]
},
{
materialDates: [7/9/2014, 8/15/2014]
}
]
}
两个文档都匹配范围过滤器,但在升序排序时,第二个对象应该排在第一位,但3/13/2013 值在排序中被考虑,因此排在第一位。有没有办法只对匹配的数组值进行排序?我正在使用的当前 NEST:
query.Sort(
x => x.OnField(j => j.OrderTrades.Select(z => z.MaterialDates))
.NestedPath(h => h.OrderTrades)
.NestedFilter(q => q.Range(
v => v.OnField("orderTrades.materialDates").From(fromRange).To(toRange)
))
.ToggleSort(true)
);
也限制为弹性 0.9。感谢您的任何想法 - 如果需要更多信息,请告诉我
【问题讨论】:
-
您的源代码缺少查询声明,因此我无法复制。什么是查询?
标签: c# sorting elasticsearch nest