2012-09-26 16 views
0

您好我現在有custom_score "_score + ((parseInt(doc.ad_when.value) - oldestAd)/doc.ad_since.value) * 2"。可以在所有文檔中使用自定義分數最大值。我希望最古老的廣告來自所有搜索的數據。 MySql有MAX函數。在MySql中,它會很容易。CustomScore和所有文檔的最大價值

例如: 在所有文檔中我都有受歡迎的字段,我希望使用所有文檔中最大的值到customscore。可能嗎?

回答

1

不幸的是,它只能分兩步完成。首先,您需要檢索排列順序爲ad_when.value的列表中的第一條記錄,或使用構面找到oldestAd值。然後,您可以在自定義分數中使用此值。我建議製作oldestAd腳本參數以防止彈性搜索在每個請求上解析腳本。

+0

不可能在一個請求中創建所有內容嗎? :-O它會很酷。例子可以在solr中,因爲引擎是一樣的。 – VJS

+0

在一個請求中做這樣的事情最大的挑戰來自elasticsearch的分佈式特性。要正確實現它,elasticsearch必須1)向所有分片發送廣播請求,並在所有分片中找到最老的分支2)在所有分片上用最舊的廣告執行搜索請求,合併結果,然後3)獲取最高記錄。目前的實施方式在1)2)和3)之前沒有任何做法。儘管你可以像這樣實現一個彈性搜索插件。 – imotov