当前,在ES 5.6上,我们使用groovy内联脚本来获取给定文档(例如-
)的字段中给定术语的tfGET 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?**
}
实现此类或以其他方式实现所需的输出将有很大帮助。