如何在 elasticsearch 搜索模板中使 _source 字段动态化?
How to make _source field dynamic in elasticsearch search template?
在弹性搜索中使用搜索查询时,我们定义响应中需要的字段
"_source": ["name", "age"]
并且在使用 search templates
时,我们必须在将搜索模板插入 ES 集群时设置 _source 字段值。
"_source": ["name", "age"]
但搜索模板的问题在于它总是 return 我们 name and age
并且要获得其他字段,我们必须相应地更改我们的搜索模板。
有什么方法可以让我们从客户端传递搜索字段,以便它只会 return 响应用户请求的字段?
我已经实现了一个领域,就像你这样做一样
"_source": "{{field}}"
然后在通过模板搜索索引时,您可以这样做
POST index_name/_search/template
{
"id": template_id,
"params": {
"field": "name"
}
}
此搜索查询 return 将 name
字段作为响应,但我找不到将其作为数组或其他格式传递的方法,因此我可以获得多个字段。
绝对!!
您的搜索模板应如下所示:
"_source": {{#toJson}}fields{{/toJson}}
然后你可以这样称呼它:
POST index_name/_search/template
{
"id": template_id,
"params": {
"fields": ["name"]
}
}
它要做的是 transform the params.fields
array into JSON 因此生成的查询将如下所示:
"_source": ["name"]
在弹性搜索中使用搜索查询时,我们定义响应中需要的字段
"_source": ["name", "age"]
并且在使用 search templates
时,我们必须在将搜索模板插入 ES 集群时设置 _source 字段值。
"_source": ["name", "age"]
但搜索模板的问题在于它总是 return 我们 name and age
并且要获得其他字段,我们必须相应地更改我们的搜索模板。
有什么方法可以让我们从客户端传递搜索字段,以便它只会 return 响应用户请求的字段? 我已经实现了一个领域,就像你这样做一样
"_source": "{{field}}"
然后在通过模板搜索索引时,您可以这样做
POST index_name/_search/template
{
"id": template_id,
"params": {
"field": "name"
}
}
此搜索查询 return 将 name
字段作为响应,但我找不到将其作为数组或其他格式传递的方法,因此我可以获得多个字段。
绝对!!
您的搜索模板应如下所示:
"_source": {{#toJson}}fields{{/toJson}}
然后你可以这样称呼它:
POST index_name/_search/template
{
"id": template_id,
"params": {
"fields": ["name"]
}
}
它要做的是 transform the params.fields
array into JSON 因此生成的查询将如下所示:
"_source": ["name"]