0
我一直在努力解決這個問題幾個小時了。我正在嘗試使用腳本分數(groovy)在搜索中實現自定義分數。Elasticsearch:在執行自定義分數腳本時沒有映射找到映射
映射:
{
"properties": {
"m_skill": {
"properties": {
"actual_period": {
"type": "long"
},
"area_display": {
"type": "string"
},
"c": {
"type": "double"
},
"capability": {
"type": "string"
},
"capability_display": {
"type": "string"
},
"order_wt": {
"type": "double"
},
"skillarea": {
"type": "string"
},
"star_wt": {
"type": "double"
},
"w": {
"type": "double"
}
}
}
},
"personid": {
"type": "string"
},
date_of_creation": {
"type": "long"
},
"phone": {
"properties": {
"c": {
"type": "long"
},
"v": {
"type": "string"
}
}
}
}
(m_skill是一個數組)
查詢:
{"match_all":{}}
得分腳本:
return doc['m_skill'].values.star_wt.sum()
錯誤:
No field found for [m_skill] in mapping with types [peopleworld]
但我沒有得到任何異常,當我嘗試與「date_of_creation」相同。 我發現有些人在談論同樣的問題,但幾乎沒有任何職位有答覆。有沒有人遇到過這樣的問題。我究竟做錯了什麼?
另一個問題,我的公式是複雜的,然後我寫上面。用簡單的語言,就好像用戶要求一套技能時,我選擇要求技能的文檔,並根據他們的star_wt授予他們一個用於排序最終結果集的分數。使用elasticsearch自定義分數來實現相同的想法是不是一個好主意?
任何幫助將受到很大的歡迎。
感謝Donglecow的努力,但我終於明白了這個問題。它不是date_of_creation字段。我試圖訪問'文檔'中的'對象',這是不可能的,因爲它可以給我的是變量。 doc ['m_skill.skillarea']做了詭計。 –