【问题标题】:In Nest (Elasticsearch), how can I get the raw json mapping of an index?在 Nest (Elasticsearch) 中,如何获取索引的原始 json 映射?
【发布时间】:2015-10-14 18:51:19
【问题描述】:

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

只有:

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

我在 c# 中得到 GetMappingResponse 对象,我必须逐个字段比较是否相等。更糟糕的是,每个字段都有自己的属性,我必须深入到这些属性中进行进一步比较。

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

然后我尝试了这个:

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

但是当我阅读res.Response 时,我得到了AmbiguousMatchException 异常。

【问题讨论】:

    标签: elasticsearch nest elasticsearch-net


    【解决方案1】:

    当您连接到 Elasticsearch 时,您可以选择像这样公开原始响应:

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

    那么您应该可以通过以下方式访问原始 json:

    var json = res.ConnectionStatus.ResponseRaw;
    

    【讨论】:

    • 我从来没有想过这个。我花了一些时间浏览 ConnectionSettings 中的所有方法,并学习了一些我不知道的其他方法。非常感谢!
    • 我有一个相关的问题。我需要将 elasticsearch 服务器中索引的映射与我的代码中定义的映射进行比较。但我只能先用新映射创建一个索引(通过CreateIndex),然后从那里读取json映射。有没有办法在不实际创建索引的情况下获取 Json 映射?
    • @foresightyj,是的 - 使用 NEST 的序列化程序序列化创建索引描述符以获取 json 而无需发出请求。
    • .ExposeRawResponse() 仍然可用吗?因为我没看到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2020-09-25
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多