ElasticSearch 嵌套标志 c#
ElasticSearch Nest Flags c#
基本上我有一个类似于这个的标志字段
[Flags]
public enum MyFlags
{
FirstFlag = 1,
SecondFlag = 2
}
public class MyClass
{
public int Id {get;set;}
public MyFlags MyFlagProperty { get; set; }
}
Client.Search<T, TResult>(c=>c.Query ??? )
我的问题是我找不到任何方法来搜索只需要我的 FirstFlag 的条目。我接近这个错误吗?我应该改用 2 个属性吗?
public class MyClass
{
public int Id {get;set;}
public bool MyFirstFlag { get; set; }
public bool MySecondFlag { get; set; }
}
Client.Search<T, TResult>(c => c.Query(d => d.Term("MyFirstFlag", true)));
最好的方法是什么?您会建议完全不使用标志而只使用属性吗?
您可以在此处采用多种方法
- 使 属性 成为一组枚举值
- 使用自定义
JsonConverter
将带有 FlagsAttribute
的枚举序列化为集合,并将集合反序列化为枚举
- 按照您的建议拥有单独的属性
我个人会选择数字 2,因为它允许您像在代码中一样使用枚举,同时将字段作为集合存储在 Elasticsearch 中并轻松查询它。
基本上我有一个类似于这个的标志字段
[Flags]
public enum MyFlags
{
FirstFlag = 1,
SecondFlag = 2
}
public class MyClass
{
public int Id {get;set;}
public MyFlags MyFlagProperty { get; set; }
}
Client.Search<T, TResult>(c=>c.Query ??? )
我的问题是我找不到任何方法来搜索只需要我的 FirstFlag 的条目。我接近这个错误吗?我应该改用 2 个属性吗?
public class MyClass
{
public int Id {get;set;}
public bool MyFirstFlag { get; set; }
public bool MySecondFlag { get; set; }
}
Client.Search<T, TResult>(c => c.Query(d => d.Term("MyFirstFlag", true)));
最好的方法是什么?您会建议完全不使用标志而只使用属性吗?
您可以在此处采用多种方法
- 使 属性 成为一组枚举值
- 使用自定义
JsonConverter
将带有FlagsAttribute
的枚举序列化为集合,并将集合反序列化为枚举 - 按照您的建议拥有单独的属性
我个人会选择数字 2,因为它允许您像在代码中一样使用枚举,同时将字段作为集合存储在 Elasticsearch 中并轻松查询它。