我在Elasticsearch映射(我正在使用ES 2.1)中有一個類型爲date
(輸入格式爲epoch_second
)的字段。我知道我可以在如何在Elasticsearch中對日期字段進行排序時指定「精度」?
{
"sort": [
{
"myDateField" : {
"order": "desc"
}
}
]
}
但是這種以秒爲單位的精確度。我想用「周間隔」,並在同一個星期內的得分(第7天,從現在落後間隔)再次,像這樣(pseduocode)排序:
{
"sort": [
{
"myDateField" : {
"order" : "desc",
"precision" : "week"
}
},
"_score"
]
}
因此,所有被擊中在過去的7天應該排在同一位置,在接下來的「排序組」中排在7天以上且小於14天,等等。並且每個「星期組」應該再次按分數排序。
換句話說:「最近7天最相關的(對當前查詢)文檔有什麼意義(但是不要完全過濾掉更老的文檔)?」
背景:事件搜索,顯然更近期的事件應該最重要。
我該如何做到這一點?
它看起來很喜歡你試圖在sql中做類似GROUP BY的事情,它在彈性搜索中同樣聚集在一起如何檢查https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations -bucket-datehistogram-aggregation.html這一個? – FZE
但由於性能原因聚合不支持分頁(https://github.com/elastic/elasticsearch/issues/4915)。 –
這是一個真正的解決方法,可能有更好的解決方案,通過排序,但如果它吸引了你,無論如何只是檢查它的評論看起來不錯https://github.com/elastic/elasticsearch/issues/4915#issuecomment-69942916 – FZE