c# - Nest搜索查询从Elastic查询DSL返回不同的结果

标签 c# elasticsearch nest

我有一个名为challenges的ElasticSearch索引,其中包含Challenge类型的对象。
当我在Kibana控制台中执行以下过滤器查询时,它将返回9个正确的结果。

GET challenges/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "type": "Orphan"
          }
        }
      ]
    }
  }
}
但是,Nest客户端的以下查询返回零命中:
var challenges = await _client.SearchAsync<Challenge>(s => s
  .Query(q => +q
    .Term(t => t.Type, Models.Enums.ChallengeType.Orphan)
  )
);
我也尝试了以下变体,但无济于事:
var challenges = await _client.SearchAsync<Challenge>(s => s
  .Query(q => q
    .Bool(b => b
      .Filter(f => f
        .Term(t => t
          .Field(f => f.Type)
          .Value(challengeType)
        )
      )
    )
  )
);
我要过滤的type属性是一个具有以下值的枚举:
public enum ChallengeType
{
  SixDimensions,
  Intro,
  Normal,
  UserCreated,
  Orphan,
  Youmate
}
并作为关键字存储在索引中。
实际上在索引中的示例对象:
{
  "id": "3bce0ce1-9676-4858-b165-1442a443bf5a",
  "icon": "water-bottle.png",
  "index": 0,
  "default-time": "09:00",
  "default-days": [
    "Saturday",
    "Monday",
    "Wednesday"
  ],
  "default-repetitions": 3,
  "category": "A",
  "title": {
    "Persian": "آب خوردن"
  },
  "dimension": "Physical",
  "type": "Orphan",
  "id-package": "00000000-0000-0000-0000-000000000000",
  "intro-pages": [ ],
  "date-created": "2020-10-14T12:39:21.8427517+03:30",
  "notify": true,
  "template": 0,
  "belongs-to-user": "00000000-0000-0000-0000-000000000000",
  "active": false
}
您是否对控制台结果与从Nest客户端执行结果有何不同有任何建议?

最佳答案

枚举应标记为StringEnumAttribute以序列化为字符串

[StringEnum]
public enum ChallengeType
{
    SixDimensions,
    Intro,
    Normal,
    UserCreated,
    Orphan,
    Youmate
}
否则,枚举将被序列化为其基础整数值。

关于c# - Nest搜索查询从Elastic查询DSL返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64354291/

相关文章:

c# - OAuth 2.0 不适用于本地 IIS

C# MVC 3 : Prevent magic string in property attribute

c# - Elasticsearch:WAITING长时间运行的请求完成

elasticsearch - logstash 6.3.0文件的未知设置 'mode'

asp.net - 如何防止索引字段?

elasticsearch - 如何使用Elasticsearch搜索所有同义词?

c# - 如何增加 ASP.NET Core Web 应用程序中的 JSON 反序列化 MaxDepth 限制

c# - 如何找到最大差异为 5 的最大子集的大小?

php - 关于elasticsearch-php的使用

elasticsearch - 如何获得别名的索引名?