nest搜索查询

wecizke3  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(313)

我有一个叫做elasticsearch的索引 challenges ,其中包含类型为 Challenge .
当我在kibana控制台中执行以下filter查询时,它返回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
}

为什么控制台的结果与从嵌套客户机执行时的结果不同,您有什么建议吗?

zzwlnbp8

zzwlnbp81#

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

[StringEnum]
public enum ChallengeType
{
    SixDimensions,
    Intro,
    Normal,
    UserCreated,
    Orphan,
    Youmate
}

否则,枚举将被序列化为其基础整数值。

相关问题