1
我剛升級到ES 2.0.0-rc1。 我使用本地節點進行JUnit測試。來自Java API的Elasticsearch 2.0 script_score
Settings settings = Settings.builder()
.put("script.inline", "on")
.put("script.indexed", "on")
.put("path.home", "/").build();
return NodeBuilder.nodeBuilder()
.settings(settings)
.local(true)
.clusterName("c").node();
我的問題是升級版沒有看到我的本地腳本。
查詢看起來是這樣的:
Script script = new Script("myscript", ScriptType.INDEXED, "native", params);
ScoreFunctionBuilder scoreBuilder = ScoreFunctionBuilders.scriptFunction(script);
輸出如下:
...
"functions" : [ {
"script_score" : {
"script" : {
"id" : "myscript",
"lang" : "native",
"params" : {
"searchMode" : "A"
}
}
}
...
這個腳本插件是在Maven依賴列表。
Caused by: org.elasticsearch.index.query.QueryParsingException: script_score the script could not be loaded
Caused by: org.elasticsearch.index.IndexNotFoundException: no such index
所以,我怎麼能安裝插件到本地節點:
它與前版本,這個新版本我得到下面的異常行之有效然而?
編輯1:
https://www.elastic.co/guide/en/elasticsearch/plugins/2.0/plugin-authors.html從classpath
/加載插件可能是解決方案。不。
編輯2:
看來,ScoreFunctionBuilder已經改變。
1.7:
ScoreFunctionBuilder scoreBuilder = ScoreFunctionBuilders.scriptFunction("myscript", "native", params);
2.0:
Script script = new Script("myscript", ScriptType.INDEXED, "native", params);
ScoreFunctionBuilder scoreBuilder = ScoreFunctionBuilders.scriptFunction(script);
然而,這並不適合於本地腳本。
我可以重新提出這個問題嗎?從1.x升級到2.1.0後,我遇到完全相同的問題。我有一個註冊了原生Java腳本的插件。我可以在日誌中看到插件確實調用了onModule(ScriptModule)方法並註冊了本地腳本的工廠。當我嘗試使用script_score腳本時,ES嘗試在「.scripts」索引中找到不存在的腳本。我指定的腳本是「lang」:「native」,「id」是正確的。任何想法正在發生什麼? – lukeforehand
當我形成了POST,看起來像這樣(沒有 「身份證」),它的工作原理: { \t 「script_score」:{ \t \t 「腳本」: 「my_script」, 「郎」: 「原生」, \t \t「params」:{} \t} } – lukeforehand