5

現在、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?**

}

このクラスの実装、または必要な出力を達成するための他の方法は、非常に役立ちます。

4

0 に答える 0