2016-03-25 22 views
3

NEST 2.0, Elasticsearch 2.2 için sarıcı hakkında ayrıntılı bilgi bulmakta zorlanıyorum. Benim sorum şu: Bir nesneyi (genel veri üyeleriyle birlikte sınıf) toplu bir ekleme yapabilir miyim ve bunu yalnızca C# sınıfım ile ES sunucu eşleştirmesi arasındaki eşlenen alanların kaydedileceği Elasticsearch ile eşleştirebilir miyim? Ve istemediğim sınıftaki ek alanları eklemeyecek mi?NEST 2.0'daki bazı POCO özelliklerini yok sayılıyor/yok

Şu anda içinde dizeleri ve çiftleri ve içinde başka sınıfların listeleri olan bir sınıf var. Dizeleri ve çiftleri kaydetmek istiyorum, ancak Toplu Eklemelerimdeki Listeler'i Elasticsearch'e dahil etmiyorum. Sınıfımın her alanında bulunan her veriyi kaydetmek istiyor. Bir sınıf üyesi özniteliği var mı, yoksa "eşim yok ise bu alanı eklemeyin" diyebileceğim başka bir yol var mı? Umarım.

+0

Dizin eşleştirmesini yapılandıran geçerli kodunuzu paylaşır mısınız? Özellik tabanlı haritalama kullanıyor musunuz? – Rob

+0

Bu bir kapalı ağ sistemidir, bu yüzden kod gönderemiyorum. –

+0

Başlığın daha ayrıntılı olabilmesi için herhangi bir yol var mı? – theMayer

cevap

7

POCO'unuzun özelliklerini NEST 2.x ile birkaç şekilde göz ardı edebilirsiniz. en türetilmiş bir ElasticsearchPropertyAttribute türüne Ignore özelliği 1.Using Örnek

using Nest; 
using Newtonsoft.Json; 

[ElasticsearchType(Name = "company")] 
public class Company 
{ 
    public string Name { get; set; } 

    [String(Ignore = true)] 
    public string IgnoreViaAttribute { get; set; } 

    public string IgnoreViaSettings { get;set; } 

    [JsonIgnore] 
    public string IgnoreViaSerializerSpecificAttribute { get; set; } 
} 

aşağıdaki POCO kullanmasına izin (örneğimizde, StringAttribute özelliği IgnoreViaAttribute üzerine) POCO

üzerinde göz ardı edilmelidir özelliği uygulanan

bağlantı ayarlarına

var settings = new ConnectionSettings(new Uri("http://localhost:9200")) 
    .InferMappingFor<Company>(i => i 
     .Ignore(p => p.IgnoreViaSettings) 
    ); 

var client = new ElasticClient(settings); 

Bu ayarlar üzerinde .InferMappingFor<TDocument>(Func<ClrTypeMappingDescriptor<TDocument>, IClrTypeMapping<TDocument>> selector) 2.Using ConnectionSettings bir örneği her önbelleğe alınır.

3.Btarafından anlaşılan ve CreatePropertyMapping() dizel denetleyicide denetlenen POCO özelliğine uygulanan bir yoksayma özelliğini kullanma. Varsayılan JsonNetSerializer durumunda, bu Json.NET JsonIgnoreAttribute'dur. Örneğimizde, bu, IgnoreViaSerializerSpecificAttribute özelliğine uygulanan özellik tarafından gösterilmiştir.

+0

dokümantasyon şu anda elastic.co adresinde bulunmaktadır - https://www.elastic.co/guide/en/elasticsearch/client/net-api/2.x/auto-map .html # görmezden-özellikleri –

1

Neredeyse bir kazı yaparak ve küçük bir sınıfı test ederek bulduğum şey, NEST 2.0 C# ile bir sınıf yayınladığınızda aşağıdaki yapının gerçekten özniteliklerini gizlemesidir. Bunu, sınıf üyesinin hemen üzerinde yaparsanız, bunu yaparken bir toplu işlem yaparken göz ardı etmek istemezsiniz.

[String(Ignore = true)] 
İlgili konular