在后端程序开发中(C#/.NET/.NET Core/.NET 5/.NET 6),使用了Elasticsearch作为数据存储和搜索引擎,现在需要在查询Elasticsearch索引文档时只返回这个文档的指定的某个或者某些字段,应该如何实现呢?
如果需要排除返回结果中的某个或者某些字段,又应该如何设置呢?
Rector
2021-08-31 提问
在Elasticsearch 5及以上版本中,可以使用源过滤器(source filter)来设置Elasticsearch返回结果需要包含或者排除的某个/某些字段。
例如,如果只需要返回指定字段,则可在DSL查询语句中设定_source的值即可,示例如下:
_source
或者
_source的值可以是字符串,也可以是字符串数组。以上的示例还使用正则表达式来配置符合条件的所有字段。
除此之外,如果需要返回结果中排除某个或者某些字段,则可以设置_source的excludes属性,DSL查询语句如下:
excludes
includes属性表示需要包含的字段,excludes表示需要排除的字段。
includes
2021-08-31 回答
在Elasticsearch(ES)2.4及以前的版本中,则可以设置fields属性来返回只需要的字段,示例如下:
fields
fields属性还接受一个或多个通配符模式,以控制应该返回文档中的匹配的某个或者某些字段,示例如下:
码龄: 3118天
专注.NET/.NET Core