我想要的是在標題字段中獲取與查詢字詞匹配的所有文檔,並且如果查詢字詞也完全匹配,則通過嵌套對象中字段的值提高分數嵌套字段。將父文檔_score和函數_score乘以嵌套查詢
以下是我的榜樣DOC:
{
"Title": "The Heart of the Elastic Stack"
"QueryClicks": [
{ "Term": "elastic stack", "Count": 100},
{ "Term": "elastic", "Count": 50},
{ "Term": "hard of the elastic", "Count": 200},
]
}
而且例如查詢DSL:
{
"query" : {
"bool" : {
"must" : [{
"match" : {
"Title" : "elastic stack"
}
}
],
"should" : [{
"nested" : {
"path" : "QueryClicks",
"query" : {
"function_score" : {
"query" : {
"match" : {
"QueryClicks.Term.lowercaseraw" : "elastic stack"
}
},
"functions" : [{
"script_score" : {
"script" : "log(doc['QueryClicks.Count'].value*4)"
}
}
],
"boost_mode" : "replace"
}
}
}
}
]
}
}
}
這多少工作,對於某些queryterm,如果匹配QueryClicks.Term之一,額外的分數將被添加到文檔的整個分數。
但並不完美,我想要的是將嵌套的函數分數(即log(doc ['QueryClicks.Count']。value * 4))與在must子句中計算的父文檔的分數相乘。
如果我能得到父文檔的得分,那麼我就可以做這樣的事情:
「腳本」: 「日誌(DOC [ 'QueryClicks.Count']值* 4)* _parent_score」
但是,由於ES不支持從嵌套查詢獲取父分數。任何其他方法?
目的是將QueryQuerys.Count計算出的_score和must查詢子句中的_score相乘。
爲了乘以功能得分與查詢得分boost_mode應該相乘。 – user3775217