在Elasticsearch查询中指定返回字段时,有没有办法不返回数组?

时间:2014-11-26 14:11:37

标签: elasticsearch

如果我有这样的文件:

[
    {
        "model": "iPhone",
        "brand": "Apple"
    },
    {
        "model": "Nexus 5",
        "brand": "Google"
    }
]

我创建的查询只返回查询中的model字段,如下所示:

{
    "fields": ["model"],
    "query": {
        "term": {
            "brand": "apple"
        }
    }
}

然后在这样的数组中返回每个文档字段:

{ "model": ["iPhone"] }

而不是

{ "model": "iPhone" }

如何避免这种情况并使用与未定义fields查询选项时相同的格式获取字段?

2 个答案:

答案 0 :(得分:19)

最后答案非常简单:您必须使用_source的{​​{1}}查询选项。

示例:

fields

这样我就可以使用以下格式获取文档,例如原始文档(没有{ "_source": ["model"], "query": { "term": { "brand": "apple" } } } 选项):

_source

答案 1 :(得分:0)

我遇到了同样的问题,而且(正如Wax Cage所说)我认为_source会带来一些表演问题。我认为同时使用fields_source可以解决问题:

const fields = ['model']

{
  fields: fields,
  _source: fields
  query: {
    term: {
      brand: 'apple'
    }
  }
}