Ben aslında bir kullanıcı ancak istedikleri yapılandırılmış olabilir bir belge, oluşturmanıza olanak sağlayan bir API uygulaması inşa ediyorum kullanarak dinamik bir nesnesi. Esasen, bizim Elasticsearch örneği erişmeleri için basit bir arayüz sağlayan ediyorum. Uygulamayı olabildiğince basit tutmaya çalışıyorum. İşte şu ana kadar uğraştığım şey. beklenen vücut için Endeksi Elasticsearch saklanacaktır ANDAE
nesne:
public class DocumentModel
{
public string Index { get; set; }
public string Type { get; set; }
public string Id { get; set; }
[ElasticProperty(Type = FieldType.Nested)]
public dynamic Document { get; set; }
}
Basit uygulanması:
[HttpPost]
[Route("")]
public IHttpActionResult Post(DocumentModel document)
{
Uri nodeLocation = new Uri("http://localhost:9200");
IConnectionPool connectionPool = new SniffingConnectionPool(new List<Uri> { nodeLocation });
ConnectionSettings settings = new ConnectionSettings(connectionPool);
ElasticClient esClient = new ElasticClient(settings);
IIndexResponse result = esClient.Index(document, i => i
.Index(document.Index)
.Type(document.Type)
.Id(document.Id));
return Ok(result.IsValid);
}
kaynağında Bu iyi çalışır, ancak Endeksi, Type içerir ve İd. Aslında yapmak istiyorum dizine eklerken sadece bilginin bu üç adet sağlamak olmakla birlikte, dinamik bir tiptedir aslında sadece indeks document.Document. Ama, işte bu IDE ve derleme zamanında bir hata atar gibi Nest hemfikir görünüyor:
"Anonim işlev veya yöntem grubu dinamik bağlı operasyon kurucu değeri olarak kullanılamaz"
"Önce bir temsilci ya da ifade ağacı türüne çevrim olmadan dinamik operasyonu sevk bir argüman olarak bir lambda ifadesi kullanılamaz".
Yalnızca document.Document
numarasını nasıl dizine ekleyebilirim? Dinamik bir türünü kullanarak daha bilinmeyen yapının gelen JSON belgesini işlemek için daha iyi bir yolu var mı?
Ben Raw.Index dynamic' ben kullandım 'Sözlük' alternatif olarak yeni endeks –
Adrian
eski dizinden ebeveyn-çocuk ilişkileri muhafaza dilek 'veya sınıfından. Uyarı: Eğer 'Sözlük'den miras alırsanız NEST belgenizdeki diğer özellikleri otomatik olarak işaretlemez (onları sözlüğe ekler). Bu aynı zamanda değişken özellikler için iyi çalıştı: Ortak özelliklere POCO özelliklerinin girdi değişken özellikler (tip 'Sözlük' ile) 'Data' özelliği girdi. Bu toplu yöntem kullanımı kolaydır. '.Errors' vb. Için kontrol etmek için' Bulk 'çağrısının sonucunu almayı unutmayın! –
nothingisnecessary