插件常用命令

./plugin list/remove/install



plugin.xml 代码

<?xmlversion="1.0"?><assembly><id>plugin</id><formats><format>zip</format></formats><includeBaseDirectory>false</includeBaseDirectory><files><file><source>${project.basedir}/src/main/resources/plugin-descriptor.properties</source><outputDirectory>elasticsearch</outputDirectory><filtered>true</filtered></file></files><dependencySets><dependencySet><outputDirectory>elasticsearch</outputDirectory><useProjectArtifact>true</useProjectArtifact><useTransitiveFiltering>true</useTransitiveFiltering></dependencySet></dependencySets></assembly>


plugin-descriptor.properties 代码

description=mynativescriptthatdoessomethinggreatversion=1.0name=my-native-scripclassname=com.*.score.plugin.MyNativeScriptPluginjava.version=1.8elasticsearch.version=*jvm=true


pom.xml 代码

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.*.es</groupId><artifactId>score-plugins</artifactId><version>1.0.0-SNAPSHOT</version><name>score-plugins</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>*</version><scope>provided</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>2.6</version><configuration><appendAssemblyId>false</appendAssemblyId><outputDirectory>${project.build.directory}/releases/</outputDirectory><descriptors><descriptor>${basedir}/src/main/assemblies/plugin.xml</descriptor></descriptors></configuration><executions><execution><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.5.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins><resources><resource><directory>src/main/resources</directory><filtering>false</filtering><excludes><exclude>*.properties</exclude></excludes></resource></resources></build></project>


只有一个java 类 MyNativeScriptPlugin

publicclassMyNativeScriptPluginextendsPlugin{privatestaticfinalESLoggerlogger=Loggers.getLogger(MyNativeScriptPlugin.class);@OverridepublicStringname(){return"my-native-scrip";//native-script为插件的名称}@OverridepublicStringdescription(){return"newscorerule";}publicvoidonModule(ScriptModulemodule){module.registerScript("my_script",MyNativeScriptFactory.class);}publicstaticclassMyNativeScriptFactoryimplementsNativeScriptFactory{@OverridepublicExecutableScriptnewScript(@NullableMap<String,Object>params){returnnewMyNativeScript();}@OverridepublicbooleanneedsScores(){returntrue;}}publicstaticclassMyNativeScriptextendsAbstractDoubleSearchScript{@OverridepublicdoublerunAsDouble(){try{//你的逻辑}catch(IOExceptione){logger.error("",e);}return0;}}}


执行打包命令

mvncleaninstall


执行安装命令

/*/bin/plugininstallfile:///root/score-plugins-1.0.0-SNAPSHOT.zip


需要所有机器都安装 否则报错 需要重启ES


执行查询命令

"script_score":{"script":{"lang":"native","inline":"my_script"}}