【问题标题】:NEST for ElasticSearch - JSONSerializationException when retrieving dataNEST for ElasticSearch - 检索数据时出现 JSONSerializationException
【发布时间】:2014-02-26 22:40:30
【问题描述】:

我正在使用 NEST API (v0.12.0.0) 与 ElasticSearch (v1.0.1) 索引进行交互,并且在检索数据时刚刚开始收到 JsonSerializationException。我不确定这是 NEST 问题还是其他问题,但它只是随机开始发生的,我们没有对我们的实现或基础架构进行任何重大更改。

我正在尝试使用类型化的 Search() 检索我的数据的 ID(存储为 Guid),并且当 JSON.NET 处理数据时出现异常。

client.Search<ESEventItem>(s => 
          s.Index("dev-events004")
          .Fields(f => f.Id).Size(100000)
          .Type("event").MatchAll()).Documents.ToList()

在 Sense 中手动运行相同的查询不会产生明显的问题:

POST /dev-events004/event/_search
{
  "size": 100000,
  "query": {
    "match_all": {}
  },
  "fields": [
    "id"
  ]
}

{
   "took": 2088,
   "timed_out": false,
   "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
   },
   "hits": {
      "total": 19257,
      "max_score": 1,
      "hits": [
         {
            "_index": "dev-events004",
            "_type": "event",
            "_id": "670a1055-cbe3-480e-b807-a2b500f9dfb3",
            "_score": 1,
            "fields": {
               "id": [
                  "670a1055-cbe3-480e-b807-a2b500f9dfb3"
               ]
            }
         },
         /* ... additional results ... */
      ]
   }
}

如果我执行一个原始的、无类型的查询Fields(new[] { "Id" }),它不会引发异常。同样,如果我返回整个 ESEventItem 对象,而不仅仅是 Id 字段,它也可以正常工作。


致 NEST 开发人员:此问题反映为 issue on the github project

【问题讨论】:

  • 当我从源代码更新 NEST 到最新版本时,我没有遇到这个问题,但那个版本还不稳定。

标签: c# elasticsearch json.net nest


【解决方案1】:

这是因为 elasticsearch 1.0 改变了字段的返回方式。即将推出的 NEST 1.0 将支持这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多