elasticsearch,nest,C#,elasticsearch,Nest" /> elasticsearch,nest,C#,elasticsearch,Nest" />

C# Nest 6.2.0自参考循环

C# Nest 6.2.0自参考循环,c#,elasticsearch,nest,C#,elasticsearch,Nest,我正在使用Nest v6.2.0连接到弹性搜索 当我尝试将类型a的文档添加到索引时,我得到一个自引用循环错误,因为类型a的对象具有类型B的属性,类型B具有类型a的属性。类型a和B的两个对象都是数据库对象 我可以在JsonParser上将ReferenceLoopHandling设置为ReferenceLoopHandling.Ignore,它可以很好地解析对象,但我似乎无法将该json字符串发送到elastic search。那么,如何在Nest使用的Json解析器上设置相同的设置呢?因此,我可

我正在使用Nest v6.2.0连接到弹性搜索

当我尝试将类型a的文档添加到索引时,我得到一个自引用循环错误,因为类型a的对象具有类型B的属性,类型B具有类型a的属性。类型a和B的两个对象都是数据库对象


我可以在JsonParser上将ReferenceLoopHandling设置为ReferenceLoopHandling.Ignore,它可以很好地解析对象,但我似乎无法将该json字符串发送到elastic search。那么,如何在Nest使用的Json解析器上设置相同的设置呢?因此,我可以将对象发送到elastic search,Nest可以正确解析对象,而不会出现自引用循环错误。

您可能希望使用不同的、更简单的POCO对发送到Elasticsearch的文档建模,以避免通过自引用循环生成可能较大的对象图

您可以引用和配置ReferenceLoopHandling属性

var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));

var settings = new ConnectionSettings(pool, (builtInSerializer, connectionSettings) =>
    new JsonNetSerializer(builtInSerializer, connectionSettings, () => new JsonSerializerSettings
    {
        ReferenceLoopHandling = ReferenceLoopHandling.Ignore
    }));

var client = new ElasticClient(settings);