我是elasticsearch的新手。在elasticsearch中,我們可以在幾乎所有查詢中使用術語「增強」。我知道它用於修改文檔分數。但我找不到它的實際用途。我的疑問是,如果我在某些查詢中使用boost值,它會影響搜索的最終分數還是索引本身中文檔的提升級別。在Elasticsearch中提升
而且是在什麼指數和增強的查詢提升的主要區別..
在此先感謝..!
我是elasticsearch的新手。在elasticsearch中,我們可以在幾乎所有查詢中使用術語「增強」。我知道它用於修改文檔分數。但我找不到它的實際用途。我的疑問是,如果我在某些查詢中使用boost值,它會影響搜索的最終分數還是索引本身中文檔的提升級別。在Elasticsearch中提升
而且是在什麼指數和增強的查詢提升的主要區別..
在此先感謝..!
查詢時間提升允許您給一個查詢比另一個查詢更重。舉例來說,假設您要查詢「有緣」的title
和body
領域,你可以寫爲:
{
"query": {
"bool": {
"should": [
{
"match": {
"title": "Quick Brown Fox"
}
},
{
"match": {
"body": "Quick Brown Fox"
}
}
]
}
}
}
但你決定你想要的title
場比body
場更重要時,需要通過(例如)到boost
上title
字段查詢2,這意味着:
{
"query": {
"bool": {
"should": [
{
"match": {
"title": {
"query": "Quick Brown Fox",
"boost": 2
}
}
},
{
"match": {
"body": "Quick Brown Fox"
}
}
]
}
}
}
(注意match
條款的結構如何改變以適應所述boost
參數)。
boost
2
的值不是_score
的兩倍 - 分數通過歸一化過程。因此,您應該將boost
視爲使此查詢子句比其他查詢子句更重要。
我的疑問是如果我在某些查詢中使用boost值。它會影響搜索的最終分數嗎?
是的,但不應該依賴於_score
的實際值。它的唯一目的是允許Elasticsearch決定哪些文檔與此查詢最相關。如果查詢改變,分數改變。
重新索引時間提升:不要使用它。它不靈活且容易出錯。
查詢時提升不會修改您的索引。它只在搜索時在字段上應用增強因子。
我更喜歡在查詢時增加,因爲它更靈活。如果您需要更改提升規則,並且您已將其設置在索引時間,則可能需要重新索引。
你能否告訴我任何實時使用提升?仍然無法找到它的完整使用..! – BlackPOP
嘿@BlackPOP,如果你還在尋找提升的實際用法(至少在查詢時間),請閱讀這篇文章:http://jontai.me/blog/2013/01/advanced-scoring-in- elasticsearch/ – BrDaHa