gpt4 book ai didi

java - 来自 Java API 的 Elasticsearch 2.0 script_score

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:45 28 4
gpt4 key购买 nike

我刚刚升级到 ES 2.0.0-rc1。我使用本地节点进行 JUnit 测试。

    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();

我的问题是升级版本看不到我的 native 脚本。

查询看起来像这样:

        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/从类路径加载插件

可能是解决方案。不。

编辑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);

但是这不适合 native 脚本。

最佳答案

我不知道为什么,因为它不遵循任何逻辑,但您需要做的就是使用 ScriptType.INLINE

Script script = new Script("myscript", ScriptType.INLINE, "native", params);

我们不能使用INDEXED,因为elasticsearch将在其系统中查找索引脚本,并且由于我们的脚本没有按说法建立索引......它不会工作。

关于java - 来自 Java API 的 Elasticsearch 2.0 script_score,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33087878/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com