在Nest(Elasticsearch)中,如何获取索引的原始json映射?

for*_*tyj 2 elasticsearch nest elasticsearch-net

我想检查当前映射(如在我的C#代码中)与elasticsearch索引中的映射之间的差异.

只有:

var res = esClient.GetMapping<EsCompany>();
Run Code Online (Sandbox Code Playgroud)

GetMappingResponse在c#中得到了对象,我将不得不逐字段地比较.更糟糕的是,每个字段都有自己的属性,我必须进入这些属性进行进一步比较.

在我的应用程序中,我更喜欢获取映射的原始json,并且我可以轻松区分两个json对象以获得相等性.

然后我尝试了这个:

var res = esClient.Raw.IndicesGetMapping(myIndexName);
Run Code Online (Sandbox Code Playgroud)

但是当我读到时res.Response,我得到一个AmbiguousMatchException例外.

mod*_*dec 5

当您连接到Elasticsearch时,您可以选择公开原始响应,如下所示:

var client = new ElasticClient(new ConnectionSettings().ExposeRawResponse());
Run Code Online (Sandbox Code Playgroud)

然后你应该能够通过以下方式访问原始json:

var json = res.ConnectionStatus.ResponseRaw;
Run Code Online (Sandbox Code Playgroud)

  • `.ExposeRawResponse()` 仍然可用吗?因为我看不到。 (2认同)