我有一个包含查询和过滤器的大型配置,效果很好。
现在,我正在使用Groovy添加一个新的脚本过滤器,它也可以正常工作:
doc['age'].value >= 18;
但我想知道如何使用Groovy执行以下操作:
向当前文档添加临时布尔字段。见下面的例子。
我的结果中的示例文档:
{
"name": "foo",
"age": 20
}
但我想在结果中添加脚本过滤器的结果,如下所示:
{
"name": "foo",
"age": 20,
"age_ok": true
}
age_ok
未编入索引,但由Groovy过滤器设置。
答案 0 :(得分:1)
AFAIK,您无法在搜索结果中注入脚本过滤器,但您可以使用可编写脚本的字段来注入可编写脚本的数据。您必须复制脚本的某些部分。
来自文档:
{
"query" : {
...
},
"script_fields" : {
"test1" : {
"script" : "doc['my_field_name'].value * 2"
},
"test2" : {
"script" : {
"inline": "doc['my_field_name'].value * factor",
"params" : {
"factor" : 2.0
}
}
}
}
}
请参阅https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-script-fields.html