Search code examples
elasticsearchnestelasticsearch-net

In Nest (Elasticsearch), how can I get the raw json mapping of an index?


I want to check the discrepancies between my current mapping (as in my C# code) and the mapping in the elasticsearch index.

With only:

var res = esClient.GetMapping<EsCompany>();

I get GetMappingResponse object in c#, I will have to compare field by field for equality. Even worse, each field has their own properties, I have to descend into those properties for further comparison.

In my application, I prefer obtaining the raw json of the mapping, and I can easily diff two json objects for equality.

I then tried this:

var res = esClient.Raw.IndicesGetMapping(myIndexName);

But when I read res.Response, I get an AmbiguousMatchException exception.


Solution

  • When you connect to Elasticsearch you can choose to expose the raw response like this:

    var client = new ElasticClient(new ConnectionSettings().ExposeRawResponse());
    

    Then you should be able to access the raw json via:

    var json = res.ConnectionStatus.ResponseRaw;