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)));

最好的方法是什么?您会建议完全不使用标志而只使用属性吗?

您可以在此处采用多种方法

  1. 使 属性 成为一组枚举值
  2. 使用自定义 JsonConverter 将带有 FlagsAttribute 的枚举序列化为集合,并将集合反序列化为枚举
  3. 按照您的建议拥有单独的属性

我个人会选择数字 2,因为它允许您像在代码中一样使用枚举,同时将字段作为集合存储在 Elasticsearch 中并轻松查询它。