How Groovy script can be invoked using java api for Elasticsearch

懵懂的女人 提交于 2019-12-08 02:03:47

问题


Looking for pointers to know how Groovy script can be invoked using java api.

test.groovy

def value = dynamicValue    
return value

Want to translate following query in Java:

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

回答1:


You can do it like this:

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();

You need to store your test.groovy file in the config/scripts folder on each data node and also make sure scripting is enabled in config/elasticsearch.yml with

script.inline: on
script.file: on


来源:https://stackoverflow.com/questions/32007060/how-groovy-script-can-be-invoked-using-java-api-for-elasticsearch

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!