我正在使用Nest v6.2.0连接到弹性搜索。
当我尝试将A类型的文档添加到索引时,出现自引用循环错误,因为A类型的对象具有B类型的属性,而B类型具有A类型的属性。两个类型的对象A和B是数据库对象。
我可以在JsonParser上将ReferenceLoopHandling设置设置为ReferenceLoopHandling.Ignore,它可以很好地解析对象,但是我似乎无法将该json字符串发送给弹性搜索。那么,如何在Nest使用的Json解析器上设置相同的设置?这样我就可以将对象发送到弹性搜索,并且Nest可以正确解析对象,而不会出现自引用循环错误。
答案 0 :(得分:1)
您可能希望使用其他更简单的POCO对要发送到Elasticsearch的文档进行建模,以避免通过自引用循环而潜在的大型对象图。
您可以引用Nest.JsonNetSerializer
nuget package和hook up Json.NET as the serializer to use with NEST,并配置ReferenceLoopHandling属性
[Fact]
public void RequestIsVerifiable()
{
//Arrange
var wcfMock = new Mock<IService>();
// wcfMock.Setup(x => x.EMCreateAsync(It.IsAny<EMCreateRequest>())).ReturnAsync(??);
//Act
var peProcessor = new PEProcessor(wcfMock.Object);
peProcessor.CreateAddress(MoqData.ModelName, MoqData.version, MoqData.name,
MoqData.MType, MoqData.AddressesList(), MoqData.EMRequest);
//Assert
wcfMock.Verify(service => service.EMCreateAsync(It.IsAny<EMCreateRequest>()), Times.AtLeastOnce);
}