在 Elasticsearch 中,有参数可以指定查询结果返回的字段,这样可以使查询结果更简约,看起来更清晰。如果是大批量 scroll 取数,还可以减少数据在网络中的传输,从而降低网络 IO。本文使用简单的查询来举例,演示环境基于 Elasticsearch v5.6.8。
演示
我的演示环境里面有一个索引 my-index-user,里面是用户的信息,字段有姓名、年龄、性别、城市等。
现在我根据用户 id 查询数据,使用 _source 参数指定返回 4 个字段:item_id、gender、city、birthday。
查询条件:
| 1 | POST my-index-user/_search | 
查询结果:
| 1 | { | 

可以看到,查到的数据只返回了 4 个字段。
备注
除了 _source 参数外,还有其它的参数也可以达到同样的效果,在 v2.4 以及之前的版本,可以使用 fields 参数:
| 1 | POST my-index-user/_search | 
下图是我找了一个低版本 Elasticsearch 集群测试了一下:

不过在 v5.x 以及之后的版本不再支持这个参数:

异常信息:
| 1 | The field [fields] is no longer supported, please use [stored_fields] to retrieve stored fields or _source filtering if the field is not stored | 
注意这里提及的 stored_fields 参数用处有点鸡肋,还是需要 _source 参数配合。

