我目前使用用Java編寫的本地腳本來基於各種形式的訪問控制來過濾搜索結果。問題在於,訪問控制驗證每個記錄花費的時間太長了。我們可以通過一些方法來改進,但是我們想出了一個可以大大改善它的解決方法。唯一的問題是,我不確定我是否可以按照自己的意願去做。從ElasticSearch中的本地腳本訪問分頁數據
解決方案:在找到相關數量的結果後,我需要停止評估訪問控制。
問題:我無法弄清楚如何從腳本內部(現在實現AbstractSearchScript)訪問偏移量和頁面大小,以決定何時達到我的最小結果。有沒有人有任何想法如何獲得這些數據「正確」,而不使其成爲一個單獨的腳本參數?
獎勵:我需要返回接近或大於實際點擊次數的點擊次數。由於elasticsearch不會緩存查詢結果,因此我可以通過簡單地返回相關結果的每個結果返回true來解決問題。但是我希望能夠找到更接近Google的解決方案,並根據迄今爲止數據的百分比來返回一些剩餘結果。但是,要做到這一點(並避免潛在的複雜問題),我想直接修改點擊數據。有沒有辦法從腳本中做到這一點?
我假設你指的是這個? http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-body.html「size」和「terminate_after」之間的實際區別是什麼? (對不起,文檔不是很好。) – Shaman
「terminate_after」是每個分片,「大小」在收集服務器上。如果你有4個碎片,並且你設置了size = 100,那麼每個碎片將會向收集器提供100個結果,這將對它們進行排序並丟棄不需要的300.如果你有理由相信所有碎片都具有相同質量的結果, size = 100&terminate_after = 25,每個分片大概會完成25%的工作。 –