Elasticsearch:使用Groovy

时间:2016-02-29 13:40:55

标签: elasticsearch groovy

我有一个包含查询和过滤器的大型配置,效果很好。

现在,我正在使用Groovy添加一个新的脚本过滤器,它也可以正常工作:

doc['age'].value >= 18;
  

但我想知道如何使用Groovy执行以下操作:

     

向当前文档添加临时布尔字段。见下面的例子。

我的结果中的示例文档:

{
    "name": "foo",
    "age": 20
}

但我想在结果中添加脚本过滤器的结果,如下所示:

{
    "name": "foo",
    "age": 20,
    "age_ok": true
}

age_ok未编入索引,但由Groovy过滤器设置。

1 个答案:

答案 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