我有彈性的搜索與以下映射(簡體)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