Keivan
Keivan

Reputation: 173

Elasticsearch.Net.UnexpectedElasticsearchClientException during deserilize result

I have a c# project which i want send a request to my elastic search server. this is my connection and elastic search client :

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

this is my request :

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

this is my model :

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

but when I send request, I get this exception :

Elasticsearch.Net.UnexpectedElasticsearchClientException: 'Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Int64' because the type requires a JSON primitive value (e.g. string, number, boolean, null) to deserialize correctly. To fix this error either change the JSON to a JSON primitive value (e.g. string, number, boolean, null) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object. Path 'hits.total.value', line 1, position 113.'

How can I resolve this exception?

Upvotes: 12

Views: 5543

Answers (2)

thani_oruvan
thani_oruvan

Reputation: 1

I had the same issue when working with NEST 6.8 and connecting to ES 7.9. In the SearchDescriptor, calling TotalHitsAsInteger(true) method made it work.

        var searchResponse =  esClient.Search<_Doc>(s => s
            .Query(pq => pq.Term(new Field("type", null), "<type value>"))
            .Index("<Index Name>")
            .Size(3)
            .TotalHitsAsInteger(true)
        );

Upvotes: 0

Krzysztof
Krzysztof

Reputation: 16140

I had the same issue, and it seems that NEST 6.6.0 library is not compatible with Elasticsearch 7.0. I had to update NEST to 7.0.0 (alpha at this point).

Upvotes: 18

Related Questions