繁体   English   中英

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中并轻松查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM