您的位置:首页 > 其它

Elasticsearch script score plug 教程

2017-04-11 19:07 239 查看

环境

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

            }

          }

        }

      } ]

    }

  }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息