我有弹性的搜索与以下映射(简体)ElasticSearch NEST - 在特定的范围内
{
"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。感谢您的任何想法 - 让我知道是否需要更多信息
是的 - 我最终使用了一个具有更多特定数据的子文档 - 尝试了几个脚本排序,但没有实现。欣赏投入(对于缺乏反馈感到抱歉,很忙) – tymeJV 2014-09-22 13:41:43