Elasticsearch script score plug 教程

本文将引导你完成Elasticsearch自定义script score插件的开发过程,包括在eclipse工程中创建目录结构,编写Demoplug.java、DemoScriptFactory.java和DemoScript.java等关键代码,以及详细说明如何打包和安装插件,最后进行测试验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境

1、elasticsearch版本:2.3.4
2、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

重启ES

3 测试


{
  "query" : {
    "function_score" : {
      "query" : {
        "term" : {
          "_id" : "20170411"
        }
      },
      "functions" : [ {
        "script_score" : {
          "script" : {
            "inline" : "demoscore",
            "lang" : "native",
            "params" : {
              "param3" : "ik_text",
              "param4" : "宁波",
              "param1" : 2,
              "param2" : 6
            }
          }
        }
      } ]
    }
  }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值