用于groovy TF查询的Elasticsearch脚本引擎实现

时间:2018-06-26 10:36:29

标签: elasticsearch elasticsearch-plugin elasticsearch-6 elasticsearch-painless

当前,在ES 5.6上,我们使用groovy内联脚本来获取给定文档(例如-

)的字段中给定术语的tf
GET document/_search
{
  "size": 114,
  "query": {"terms": {
    "doc_id": [1840, 2160]
  }}, 
        "script_fields": {
          "tf": {
            "script": {
              "lang": "groovy",
              "inline": "_index['text'][term_value].tf()",
              "params": {
                "term_value": "hello"
              }
            }
          }
        }
      }

因此它返回了我的回复-

 "hits": {
    "total": 36,
    "max_score": 1,
    "hits": [
      {
        "_index": "document",
        "_type": "sample",
        "_id": "41707",
        "_score": 1,
        "fields": {
          "tf": [
            3
          ]
        }
      }]

但是在ES 6.0 groovy的支持下降之后,脚本引擎似乎是剩下的唯一解决方案,并且由于对Elasticsearch类和内部行为缺乏正确的了解,因此真正难以确定实现。 / p>

基于脚本引擎文档,我需要实现

private static class MyExpertScriptEngine implements ScriptEngine {
    @Override
    public String getType() {
        return "string";
    }

    @Override
    public <T> T compile(String scriptName, String scriptSource, ScriptContext<T> context, Map<String, String> params) {}

   **What goes here?**

}

实现此类或以其他方式实现所需的输出将有很大帮助。

0 个答案:

没有答案