欢迎投稿

今日深度:

Elasticsearch script score plug 教程,elasticsearchscore

Elasticsearch script score plug 教程,elasticsearchscore


环境

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
            }
          }
        }
      } ]
    }
  }
}

www.htsjk.Com true http://www.htsjk.com/Elasticsearch/29793.html NewsArticle Elasticsearch script score plug 教程,elasticsearchscore 环境 1、elasticsearch版本:2.3.42、java版本 1.83、eclipse 4.4.04、win7 elasticsearch配置 elasticsearch.yml中追加如下配置: script.inline: on script.indexed: on...
相关文章
    暂无相关文章
评论暂时关闭