Elasticsearch script score plug 教程
2017-04-11 19:07
239 查看
环境
1、elasticsearch版本:2.3.42、java版本 1.8
3、eclipse 4.4.0
4、win7
elasticsearch配置
elasticsearch.yml中追加如下配置:script.inline: on
script.indexed: on
script.file: on
教程
1、开发插件
1.1 eclipse工程目录
1.2 代码
1.2.1 Demoplug.java
package com.es.plugindemo; import org.elasticsearch.plugins.Plugin; import org.elasticsearch.script.ScriptModule; public class Demoplug extends Plugin {
//demoscore就是插件名
private static final String PLUGIN_NAME = "demoscore"; @Override public String name() { return PLUGIN_NAME; } @Override public String description() { return "this is a demo about how to build a script score plugin."; } public void onModule(ScriptModule scriptModule) { scriptModule.registerScript(PLUGIN_NAME, DemoScriptFactory.class); } }
1.2.2 DemoScriptFactory.java
package com.es.plugindemo; import java.util.Map; import org.elasticsearch.common.Nullable; import org.elasticsearch.script.ExecutableScript; import org.elasticsearch.script.NativeScriptFactory; public class DemoScriptFactory implements NativeScriptFactory { @Override public ExecutableScript newScript(@Nullable Map<String, Object> params) { return new DemoScript(params); } @Override public boolean needsScores() { return false; } }
1.2.3 DemoScript.java
package com.es.plugindemo; import java.util.Map; import org.elasticsearch.script.AbstractFloatSearchScript; public class DemoScript extends AbstractFloatSearchScript { private int param1; private int param2; private String param3; private String param4; private int length; public DemoScript(Map<String, Object> params) { super(); param1 = (int) params.get("param1"); param2 = (int) params.get("param2"); param3 = (String) params.get("param3"); param4 = (String) params.get("param4"); } @Override public float runAsFloat() { try { return 666; } catch (Exception ex) { ex.printStackTrace(); return -1; } } }
1.2.4 DemoScript.java
引入es、lucenejar包1.3 打包
按照Eclipse的正常打包,命名为demoscore-1.0.0.jar 即可。2 安装插件
2.1
将打包文件拷贝至es的plugin文件夹:elasticsearch-2.3.4\plugins\demoscore编辑plugin-descriptor.properties文件,文件内容如下:
name=demoscore description=this is a demo about how to build a script score plugin. version=1.0.0 jvm=true classname=com.es.plugindemo.Demoplug java.version=1.8 elasticsearch.version=2.3.4
2.2
文件目录如下:2.3
重启ES3 测试
{"query" : {
"function_score" : {
"query" : {
"term" : {
"_id" : "20170411"
}
},
"functions" : [ {
"script_score" : {
"script" : {
"inline" : "demoscore",
"lang" : "native",
"params" : {
"param3" : "ik_text",
"param4" : "宁波",
"param1" : 2,
"param2" : 6
}
}
}
} ]
}
}
}
相关文章推荐
- elasticsearch aggregation script
- Elasticsearch基础教程
- Elasticsearch.Net使用入门教程(1)
- Elasticsearch基础教程
- Elasticsearch基础教程
- elasticsearch painless最强教程
- 关于elasticsearch function_score的使用
- ElasticSearch新手教程
- Elasticsearch基础教程
- Elasticsearch基础教程
- Elasticsearch基础教程
- Elasticsearch基础教程
- Elasticsearch & plugins(ELK+kafka+filebeat) 安装教程
- Elasticsearch基础教程
- Elasticsearch.Net使用教程 MVC4图书管理系统(2)
- Elasticsearch基础教程
- ElasticSearch RestHighLevelClient 教程(二) 操作index
- ElasticSearch基础教程
- elasticsearch score 得分 自定义
- Elasticsearch.Net使用入门教程(1)