Elasticsearch.Net.UnexpectedElasticsearchClientException во время результата десерилизации - PullRequest
11 голосов
/ 16 апреля 2019

У меня есть проект на c #, и я хочу отправить запрос на мой сервер эластичного поиска. это мой клиент для поиска и поиска:

ConnectionSettings connectionSettings;
ElasticClient elasticClient;
connectionSettings = new ConnectionSettings(new 
Uri("http://192.168.2.197:9292/"));        
elasticClient = new ElasticClient(connectionSettings);

это мой запрос:

var response = elasticClient.Search<NewsDataModel>(s => s
.Index("news-index")
.Type("title")
.Query(q => q.QueryString(qs => qs.Query("ny"))));

это моя модель:

public class NewsDataModel  {      
public string _id { get; set; }     
public string title { get; set; }     
public string content { get; set; }       
public string summary { get; set; }
}

но когда я отправляю запрос, я получаю это исключение:

Elasticsearch.Net.UnexpectedElasticsearchClientException: 'Невозможно десериализовать текущий объект JSON (например, {"name": "value"}) в тип 'System.Int64', поскольку тип требует значения примитива JSON (например, string, number, boolean, null) для правильной десериализации. Чтобы исправить эту ошибку, измените JSON на примитивное значение JSON (например, строка, число, логическое значение, ноль) или измените десериализованный тип так что это нормальный тип .NET (например, не примитивный тип, такой как целое число, а не тип коллекции, такой как массив или список), который может быть десериализовано из объекта JSON. JsonObjectAttribute также может быть добавлен к типу, чтобы заставить его десериализовать из объекта JSON. Путь 'hit.total.value', строка 1, позиция 113. '

Как мне разрешить это исключение?

1 Ответ

15 голосов
/ 17 апреля 2019

У меня была такая же проблема, и кажется, что библиотека NEST 6.6.0 не совместима с Elasticsearch 7.0.Мне пришлось обновить NEST до 7.0.0 (альфа на данный момент).

...