elasticsearch 打分插件
插件常用命令
./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"}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。