Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert ISearchResponse <dynamic> to C# Class Object?

How to convert ISearchResponse to C# Class Object.

I am trying to convert to Class Object where my Class name will be dynamic.

ISearchResponse<dynamic> bResponseNewLoop = 
    objElastic.Search<dynamic>(s => s
        .Index("index1")
        .Type("DOCTYPE")
        .From(0)
        .Size(10)
        .Source(sr => sr.Include(RequiredFields)));

From above Response , i want to convert the response object to class object and The class name i am retriving from xml file.

like image 859
Veena Reddy Avatar asked Mar 16 '23 13:03

Veena Reddy


1 Answers

In newer NEST versions we introduced IDocument which allows you to do lazy deserialization to the proper type.

var response = objElastic.Search<IDocument>(s => s
     .Index("index1")
     .Type("DOCTYPE")
     .From(0).Size(10)
     .Source(sr => sr.Include(RequiredFields)
);

Now on response you can loop over all the .Hits and inspect the hit metadata and use that to deserialize to the type that you want. e.g

.Hits.First().Source.As<MyDocument>()

As<>() is a method on IDocument

like image 188
Martijn Laarman Avatar answered Mar 24 '23 09:03

Martijn Laarman