子文書のプロパティが変更されたときに、すべての親文書を自動的に更新する方法はありますか?たぶん、私は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クライアントを使用しています。
おかげで、など、直接ストリーミングを無効にしたいすべてのリクエスト/レスポンスをログアウトし、各操作の後にリフレッシュを呼び出すことはありませんさまざまな種類の親に属しています...クライアントがプロジェクト、注文などに属しているように – user10479
Elasticsearchは、検索、分析、大規模なデータを大規模なパフォーマンスで処理するのに非常に優れています。ただし、リレーショナルデータストアではないため、データのモデリング方法を再設計する必要があります。 –