用于在弹性搜索中实现script_fields查询的Java API

时间:2017-01-30 12:19:55

标签: java elasticsearch

我试图找到这个问题的答案,却找不到。场景是:我必须得到一个额外的字段,即弹性搜索查询结果中两个文件的计算。为此我使用的是script_fields。

"script_fields": {
      "result": {
        "script": "doc['feild1'].value / doc['field2'].value"
      }
    }

查询工作正常,我得到了正确的结果。 但是现在我必须用Java实现查询,我找不到用Java实现script_fields的任何方法。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

非常简单地使用addScriptField()方法,如下所示:

SearchResponse response = client().prepareSearch()
    .setQuery(matchAllQuery())
    .addScriptField("result", new Script(ScriptType.INLINE, "groovy", "doc['field1'].value / doc['field2'].value", Collections.emptyMap()))