ElasticSearch Nest Flags c#

本文关键字:Flags Nest ElasticSearch | 更新日期: 2023-09-27 18:11:04

基本上我有一个类似的标志字段

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

这里最好的方法是什么?你会建议完全不使用标志,只使用属性吗?

ElasticSearch Nest Flags c#

这里有几种方法可以使用

  1. 将属性设置为一组枚举值
  2. 使用自定义JsonConverter将一个带有FlagsAttribute的枚举序列化为一个集合,并将一个集合反序列化为一个枚举
  3. 有单独的属性,如你所建议的

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