2017-01-30 231 views
0

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

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

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

有人可以帮忙吗?

回答

1

非常简单地使用addScriptField()方法是这样的:

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

感谢您的答复,但我用的信息搜索结果的API, – pbajpai21

+0

你所说的“信息搜索结果API”是什么意思?请用您当前的代码更新您的问题 – Val