uf123 发表于 2019-1-29 08:48:25

elasticsearch 打分插件

  插件常用命令

  ./plugin list/remove/install
  plugin.xml 代码


    plugin
   
      zip
   
    false
   
      
            ${project.basedir}/src/main/resources/plugin-descriptor.properties
            elasticsearch
            true
      
   
   
      
            elasticsearch
            true
            true
      
   
  plugin-descriptor.properties 代码
description=my native script that does something great
version=1.0
name=my-native-scrip
classname=com.*.score.plugin.MyNativeScriptPlugin
java.version=1.8
elasticsearch.version=*
jvm=true  pom.xml 代码

4.0.0
com.*.es
score-plugins
1.0.0-SNAPSHOT
score-plugins

http://maven.apache.org

   

            
                org.elasticsearch
                elasticsearch
                *
                provided
            



      
      
          org.apache.maven.plugins
          maven-assembly-plugin
          2.6
         
            false
            ${project.build.directory}/releases/
            
                  ${basedir}/src/main/assemblies/plugin.xml
            
         
         
            
                  package
                  
                      single
                  
            
         
      
      
    org.apache.maven.plugins
    maven-compiler-plugin
    3.5.1
   
      1.8
      1.8
   

      

      
         
            src/main/resources
            false
            
                *.properties
            
      
      
   
  只有一个java 类 MyNativeScriptPlugin
public class MyNativeScriptPlugin extends Plugin {
    private static final ESLogger logger = Loggers.getLogger(MyNativeScriptPlugin.class);
    @Override
    public String name() {
      return "my-native-scrip";//native-script为插件的名称
    }
    @Override
    public String description() {
      return "new score rule";
    }
    public void onModule(ScriptModule module) {
      module.registerScript("my_script", MyNativeScriptFactory.class);
    }
   
    public static class MyNativeScriptFactory implements NativeScriptFactory {
      @Override
      public ExecutableScript newScript(@Nullable Map params) {
            return new MyNativeScript();
      }
      @Override
      public boolean needsScores() {
            return true;
      }
    }
    public static class MyNativeScript extends AbstractDoubleSearchScript {
      @Override
      public double runAsDouble() {
            try {
               //你的逻辑
            } catch (IOException e) {
                logger.error("",e);
            }
            return 0;
      }
    }
}  执行打包命令
mvn clean install  执行安装命令
/*/bin/plugin install file:///root/score-plugins-1.0.0-SNAPSHOT.zip  需要所有机器都安装 否则报错 需要重启ES

  执行查询命令
"script_score" : {
            "script" : {
               "lang": "native",
               "inline":"my_script"
             }
      }


页: [1]
查看完整版本: elasticsearch 打分插件