Elasticsearch.Nest 教程系列 10-4 常用类型:Union Type | 类型合并
本系列博文是“伪”官方文档翻译(更加本土化),并非完全将官方文档进行翻译,而是在查阅、测试原始文档并转换为自己真知灼见后的“准”翻译。有不同见解 / 说明不周的地方,还请海涵、不吝拍砖 :)
官方文档见此:https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/introduction.html
本系列对应的版本环境:ElasticSearch@7.3.1,NEST@7.3.1,IDE 和开发平台默认为 VS2019,.NET CORE 2.1
ES 中的某些API参数可以接受多个 JSON 数据结构,例如,搜索请求时对 source 过滤可以接受:
-
bool:可以通过布尔值来禁用 _source 检索。
-
string、string[]:可以使用字符串来设定通配符,以此来控制返回 _source 中的哪些部分。
-
object:一个包含 includs 和 excluds 属性的对象,来分别控制需要在 _source 中需要“包含”和“排除”的部分。
在 NEST 中,可以使用 Union<First,Second> 类型。
隐式转换
Union<TFirst,TSecond>具有隐式运算符,可从 TFirst 或 TSecond 的实例转换为Union<TFirst,TSecond> 的实例:
1 | Union<bool, ISourceFilter> sourceFilterFalse = false; |
通过构造函数
1 | var sourceFilterTrue = new Union<bool, ISourceFilter>(true); |
-
当编译器不支持的时候,就需要使用通过构造函数的方式来声明了。
Match
可以通过委托的方式,对 TFirst 和 TSecond 进行运算比对:
1 | var sourceFilterTrue = new Union<bool, ISourceFilter>(true); |
同样,委托也可以返回一个值:
1 | var serializedFilterTrue = sourceFilterTrue.Match( |