我有很多包含rate
屬性的文檔,它是一個包含可接受比率的最小/最大範圍的數組。Elasticsearch:如何根據最大/最小值的數組得分範圍查詢
{ "rate": [250, 700] }
我現在想執行提供了另一種範圍查詢,例如:
{
"bool": {
"must": [
"range": {
"rate": { "from": 100, "to": 500 }
}
]
}
}
這工作正常,並始終返回在範圍內設置的值的至少一個值是什麼我想要。
但是,對於所有結果,分數是相同的。無論文檔中的值是否與文檔上的值相同,或者只是碰到了幾個數字的範圍都沒關係。如下圖所示:
{
"_id": "one",
"_score": 1",
"_source": { "rate": [250,750] }
},
{
"_id": "two",
"_score": 1",
"_source": { "rate": [200,350] }
},
{
"_id": "three",
"_score": 1",
"_source": { "rate": [500,750] }
}
有什麼辦法可以改善範圍搜索提供另一個範圍嗎?
謝謝,@pickypg,我實際上已經忘記了當我問這個問題(現在修復)時添加了範圍查詢。不幸的是,當我使用AWS ES服務時,我無法訪問groovy。你會想到其他任何可以使它工作的想法嗎?如果有幫助,我可以對數據進行不同的建模,但是我發現像'rate_from'和'rate_to'這樣的單獨值更加複雜。這個想法是,它與範圍內的某個區域匹配得越多,或者評分越高(即提供100,500個輸入時,100,500個輸入將是100%匹配,而400,700則不是那麼多。 – zanona