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

在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参数来更灵活地控制返回的字段。

你可能感兴趣的:(jenkins,运维)