2017-12-07 8 views
0

Ich Konfiguration des ConnectionSettings Objekt wie folgt:Elasticsearch Id Inference 5.x

ConnectionSettings = new ConnectionSettings(settings.EndPointUrl) 
    .DefaultIndex("myindex") 
    .BasicAuthentication(settings.Username, settings.Password) 
    .PrettyJson() 
    .InferMappingFor<MyObject>(l => l 
     .IdProperty(p => p.UserId) 
    ); 

Wenn ich Index MyObject, ist es nicht die InferMappingFor Einstellung zu ehren. Ich habe wie so indizieren einzelne Objekte hat, explizit die Id Feldeinstellung:

var response = Elasticsearch.Client.Index(model, i => i 
    .Id(model.UserId) 
); 

Jede Idee, warum InferMappingFor funktioniert nicht? Fehle ich etwas?

+1

Sind Sie sicher, dass 'Elasticsearch.Client' die oben definierten' ConnectionSettings' verwendet? Verwenden Sie NEST 5.x? – Rob

Antwort

0

Anstatt InferMapping zu verwenden, sollten Sie Attributdekorationen für Ihre Klasse MyObject verwenden. Beispiel:

+0

Ich habe nicht die Fähigkeit, das zu tun. Wir haben unsere Modelle in einem separaten Projekt und möchten, dass dieses Projekt nicht von ES abhängig ist, da die Abhängigkeit von ES sich auf jedes andere Projekt ausweiten wird, das auf unser Modellprojekt verweist. – Namrehs

+0

Ich weiß, dass dies Ihre Frage nicht wirklich beantwortet, aber stellen Sie sicher, dass Sie darüber nachdenken, ob dieses Modell im richtigen Projekt ist. Dieses Modell sollte ElasticSearch gehören und nicht als Domänenmodell freigegeben sein. Sie haben recht, ES-Abhängigkeiten in anderen Projekten nicht zu wollen. – jhilden

Verwandte Themen