elasticsearch 打分插件
admin
2023-07-29 09:20:11
0

插件常用命令

./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"  
             }
        }


相关内容

热门资讯

赖清德当众吃狗粮,郭正亮:他是... 赖清德昨天(3日)出席台北宠物用品展开幕典礼,顺便替家中两只宠物狗采购用品,期间有业者声称自家肉干无...
美大使:好失望,你们在中国肯定... 【文/观察者网 冯雪】据路透社7月3日报道,美国新任驻新西兰及多个太平洋岛国大使表示,确保获取库克群...
投资4000万游乐园被拆,原为... ▲游乐园已经变成一片废墟今年5月,贵州省毕节市七星关区政府项目公司被一游乐园投资方告上法庭。红星新闻...
欧洲人快热到裸奔了 最近有关欧洲气温的话题热度,都快赶上世界杯了,全球都在争论不休。无他。这个夏天,欧洲已经热疯了。法国...
免砸砖漏水维修电话 免砸砖漏水维修电话西安漏水维修电话【4000800692】,壁挂灶维修,地暖清洗,公司注册资本为30...
平板电脑变砖怎么办 当平板电脑变成砖头后,会发生如下情形:无法开机、黑屏、进入不了系统等问题。这时候,需要像一名修建筑工...
抛光砖和抛釉砖哪个更好,抛光砖... 抛光砖和抛釉砖是常见的瓷砖装饰材料,本文比较了它们的优缺点,并介绍了抛光砖的防滑处理方法。 抛...
抹灰的施工步骤及工艺是什么 1、基层清理方面的问题很重要,清理干净之后才可以进行抹灰。2、抹灰实际操作的过程中,从上到下的顺序非...
较详细的毛坯房装修流程(图文解... 毛坯房装修需要经过前期准备、水电改造和防水工程、装修装饰等多个步骤,需要仔细斟酌。同时,可以通过选择...
特朗普再遭“背刺”,又一前盟友... 美国《时代》周刊7月4日报道称,美国保守派评论员、前特朗普盟友塔克·卡尔森在与总统特朗普关系出现裂痕...