現在、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.0groovy
のサポートが終了し、スクリプト エンジンが唯一の解決策のように思われるようになった後、Elasticsearch のクラスと内部動作を正しく理解していないため、実装を理解することが非常に困難になりました。
Scripting Engine のドキュメントに基づいて、実装する必要があります
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?**
}
このクラスの実装、または必要な出力を達成するための他の方法は、非常に役立ちます。