簡體   English   中英

Elasticsearch隨機索引排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM