【发布时间】:2017-01-27 08:58:46
【问题描述】:
当子文档的属性发生变化时,ElasticSearch 中是否有办法自动更新所有父文档?也许我在跟踪我是如何使用 ElasticSearch 的。代码:
var child = new Child
{
Id = Guid.NewGuid(),
Name = "Child"
};
var parent = new Parent
{
Id = Guid.NewGuid(),
Name = "Parent",
Child = child
};
var nestedResponse = client.CreateIndex("index", i => i
.Mappings(m => m
.Map<Parent>(map => map
.AutoMap()
.Properties(ps => ps
.Nested<Child>(n => n
.Name(p => p.Child)
.AutoMap()
)
)
)
)
);
var indexResult = client.Index<Parent>(parent);
indexResult = client.Index<Child>(child);
var reloadedParent = client.Get<Parent>(parent.Id.ToString()).Source;
var childName = reloadedParent.Child.Name;
child.Name = "child changed";
var updateRequest = new UpdateRequest<Child, Child>("index", typeof(Child), child.Id);
updateRequest.Doc = child;
var reindexResult = client.Update<Child>(updateRequest);
var reloadedParentAfterChildChange = client.Get<Parent>(parent.Id.ToString()).Source;
var childChangedName = reloadedParentAfterChildChange.Child.Name;
Assert.AreEqual(child.Name, childChangedName);
}
}
public class Parent
{
public Guid Id { get; set; }
public string Name { get; set; }
public Child Child { get; set; }
}
public class Child
{
public Guid Id { get; set; }
public string Name { get; set; }
}
孩子可以属于许多不同的父母。有什么方法可以将子项的更改传播给包含子项的所有父项?我正在使用来自 c# 的 Nest 客户端。
【问题讨论】:
标签: c# elasticsearch nest