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

Mic*_*rin 10 elasticsearch

如果我有这样的文件:

[
    {
        "model": "iPhone",
        "brand": "Apple"
    },
    {
        "model": "Nexus 5",
        "brand": "Google"
    }
]
Run Code Online (Sandbox Code Playgroud)

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

{
    "fields": ["model"],
    "query": {
        "term": {
            "brand": "apple"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在数组中返回每个文档字段,如下所示:

{ "model": ["iPhone"] }
Run Code Online (Sandbox Code Playgroud)

代替

{ "model": "iPhone" }
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*rin 19

最后答案很简单:你必须使用_source查询选项fields.

例:

{
    "_source": ["model"],
    "query": {
        "term": {
            "brand": "apple"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以使用以下格式获取文档,例如原始文档(没有_source选项):

{ "model": "iPhone" }
Run Code Online (Sandbox Code Playgroud)