2

寻找指针以了解如何使用 java api 调用 Groovy 脚本。

test.groovy

def value = dynamicValue    
return value

想用 Java 翻译以下查询:

GET /test-index/_search
{
   "query": {
      "match_all": {}
   },
   "script_fields": {
      "checkValue": {
         "script": "test",
         "params": {
            "dynamicValue": 7
         }
      }
   }
}
4

1 回答 1

2

你可以这样做:

Map<String, Object> params = ImmutableMap.of("dynamicValue", 7);
SearchResponse response = client().prepareSearch("test-index")
        .setQuery(matchAllQuery())
        .addScriptField("checkValue", new Script("test", ScriptType.FILE, "groovy", params))
        .execute().actionGet();

您需要将test.groovy文件存储在每个数据节点上的文件夹中,config/scripts并确保启用脚本config/elasticsearch.yml

script.inline: on
script.file: on
于 2015-08-14T10:09:08.173 回答