> 技术文档 > Elasticsearch只返回指定的字段(用_source)_elasticsearch 指定返回字段

Elasticsearch只返回指定的字段(用_source)_elasticsearch 指定返回字段

在Elasticsearch中,当你想要查询文档但不返回所有字段,只返回指定的字段(比如这里的id字段),你可以使用_source参数来实现这一点。但是,有一点需要注意:Elasticsearch的_source字段默认是返回的,除非你在查询时明确指定不返回。如果你想仅返回id字段,实际上你应该使用_source过滤来实现这一点,或者在查询中指定返回哪些字段。

方法1:使用_source过滤

如果你想通过_source过滤返回特定的字段,你可以这样做:



GET /your_index/_search

{

\"_source\": [\"id\"],

\"query\": {

\"match_all\": {}

}

}

在这个例子中,_source被设置为一个包含单个元素[\"id\"]的数组,这表示Elasticsearch将只返回每个匹配文档的id字段。

方法2:使用fields参数

如果你使用的是Elasticsearch 7.x或更新版本,并且想要更灵活地控制哪些字段被返回(包括文档元数据),你可以使用fields参数:



GET /your_index/_search

{

\"fields\": [\"id\"],

\"query\": {

\"match_all\": {}

}

}

这里,fields参数同样设置为一个数组,包含你想要返回的字段名。这种方法允许你同时请求文档的元数据(如_id)以及其他指定字段。例如:



GET /your_index/_search

{

\"fields\": [\"id\", \"_id\"],

\"query\": {

\"match_all\": {}

}

}

这将返回每个匹配文档的id_id字段。

总结

  • 如果你只想返回特定的字段(例如只返回id),使用第一种方法(_source: [\"id\"])。

  • 如果你还想返回其他非默认字段或者文档的元数据,使用第二种方法(fields: [\"id\", \"_id\"])。

确保根据你的Elasticsearch版本和具体需求选择合适的方法。在Elasticsearch 7.x及更高版本中,推荐使用fields参数来更灵活地控制返回的字段。