0

在弹性搜索中使用搜索查询时,我们定义了响应中需要的字段

"_source": ["name", "age"]

在使用时,search templates我们必须在将搜索模板插入 ES 集群时设置 _source 字段值。

"_source": ["name", "age"]

但是搜索模板的问题是它总是会返回我们name and age并且要获取其他字段,我们必须相应地更改我们的搜索模板。

有什么方法可以从客户端传递搜索字段,以便它只返回响应用户询问的字段?我已经在一个领域实现了这一点,比如如果你这样做

"_source": "{{field}}"

然后通过模板搜索索引时,您可以执行此操作

POST index_name/_search/template
{
  "id": template_id,
  "params": {
    "field": "name"
  }
}

此搜索查询返回name字段作为响应,但我找不到以数组或其他格式传递它的方法,因此我可以获得多个字段。

4

1 回答 1

1

绝对地!!

您的搜索模板应如下所示:

"_source": {{#toJson}}fields{{/toJson}}

然后你可以这样称呼它:

POST index_name/_search/template
{
  "id": template_id,
  "params": {
    "fields": ["name"]
  }
}

它要做的是params.fields数组转换为 JSON,因此生成的查询将如下所示:

"_source": ["name"]
于 2021-03-11T12:52:54.823 回答