![](/img/trans.png)
[英]Is the Elasticsearch sorting applied after or before index analysis (scan)?
[英]Elasticsearch shuffle index sorting
提前致謝。 我首先介紹情況,最后給出解決方案。
我收集了具有以下映射的2M文檔:
{
"image": {
"properties": {
"timestamp": {
"type": "date",
"format": "dateOptionalTime"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
}
我有一個網頁,通過以下搜索可以瀏覽所有文檔:
{
"from":STARTING_POSITION_NUMBER,
"size":15,
"sort" : [
{ "_id" : {"order" : "desc"}}
],
"query" : {
"match_all": {}
}
}
命中看起來像這樣(請注意_id值是url的哈希值,以防止文檔重復):
{
"_index": "images",
"_type": "image",
"_id": "2a750a4817bd1600",
"_score": null,
"_source": {
"url": "http://test.test/test.jpg",
"timestamp": "2014-02-13T17:01:40.442307",
"title": "Test image!"
},
"sort": [
null
]
}
效果很好。 我唯一的問題是文檔按時間順序顯示(最早的文檔顯示在第一頁上,而最近索引的文檔顯示在最后一頁上),但是我希望它們以隨機順序顯示。 例如,第10頁應始終顯示始終相同的N個文檔,但不必按日期排序。
我雖然喜歡通過散列對所有文檔進行排序,但這是隨機的和確定性的。 我該怎么辦?
我已經搜索了文檔,並且排序API僅用於排序結果,而不是完整索引。 如果找不到解決方案,我將隨機選擇文檔並將它們索引在單獨的集合中。
謝謝。
我使用以下搜索解決了該問題:
{
"from":STARTING_POSITION_NUMBER,
"size":15,
"query" : {
"function_score": {
"random_score": {
"seed" : 1
}
}
}
}
感謝Elasticsearch郵件列表中的David指出了隨機評分的功能評分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.