NEST для ElasticSearch - JSONSerializationException при извлечении данных

Я использую NEST API (v0.12.0.0) для взаимодействия с ElasticSearch (v1.0.1) index, и я только начал получать исключение JsonSerializationException при извлечении моих данных. Я не уверен, является ли это проблемой NEST или нет, но это началось случайно, и мы не внесли никаких серьезных изменений в нашу реализацию или инфраструктуру.

Я пытаюсь получить идентификаторы моих данных (сохраненных как Guid) с помощью набранного Search ‹> (), и я получаю исключение, когда данные обрабатываются JSON.NET.

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

JsonSerializationException

Выполнение этого же запроса вручную в 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: этот вопрос отражен как проблема в проекте github.


person Nathan Taylor    schedule 26.02.2014    source источник
comment
Когда я обновляю NEST до последней версии из источников, у меня не возникает этой проблемы, но эта версия еще не стабильна.   -  person Nathan Taylor    schedule 27.02.2014


Ответы (1)


Это связано с тем, что elasticsearch 1.0 изменил способ возврата полей. Грядущий NEST 1.0 будет поддерживать это.

person Martijn Laarman    schedule 27.02.2014