Elasticsearch reicht .NET-Client in Version 6.0 nach

Während die Suchmaschine bereits in Version 6.1 vorliegt, kündigt Elastic für NEST und Elasticsearch.Net zunächst die generelle Verfügbarkeit von Client-Version 6.0 an – allerdings mit weitgehender Kompatibilität zu 6.1.

In Pocket speichern vorlesen Druckansicht
NEST 2.0: ein .NET-Client für Elasticsearch
Lesezeit: 2 Min.
Von
  • Matthias Parbel

Elasticsearch kündigt die Verfügbarkeit (GA – General Availability) der .NET-Clients in Version 6.0 an. Zu der bereits in Version 6.1 vorliegenden Suchmaschine bestehe zwar Funktionsparität, allerdings seien einzelne neuere Funktionen wie beispielsweise Composite Aggregation und Machine Learning Forecasting noch nicht vollständig implementiert – diese sollen in einem der nächsten 6.x-Releases nachgereicht werden. Der Anbieter versichert außerdem, dass die .NET-Clients NEST und Elasticsearch.Net ansonsten auch heute schon mit Elasticsearch 6.1 ohne Probleme genutzt werden könnten.

Die wichtigsten Neuerungen bei den .NET-Clients betreffen die Serialisierung. An Stelle des bisher üblichen Custom Serializers steht ab NEST 6.0 für User Defined Types ein expliziter Pfad in der Client Serialization Pipeline zur Verfügung. Damit lässt sich die Serialisierung für eigene User Defined Types konfigurieren, ohne das generelle Verhalten des Clients zu beeinträchtigen. Die NEST-Macher haben außerdem an der bisherigen Abhängigkeit von der Library Newtonsoft.Json (Json.NET) gearbeitet. Nach einem vollständigen Re-Namespacing auf Nest.Json werden die beiden Zielplattformen .NET Framework und .NET Core unterstützt, und Anwender können eine beliebige Version von Newtonsoft.Json nutzen, unabhängig von der, die der NEST-Client verwendet.

Weitreichende Folgen wird der bis Elasticsearch 7.x geplante Verzicht auf Mapping Types haben. Mehrere Typen in einem einzigen Index sind bereits ab Elasticsearch 6.0 nicht mehr erlaubt, wodurch Anpassungen im NEST-Code erforderlich werden können. Mit Hilfe der Methode DefaultMappingFor<T>() lassen sich Typen, die bisher in einen gemeinsamen Index flossen, in verschiedene Indizes überführen, wie das folgende Beispiel zeigt:

var settings = new ConnectionSettings()
.DefaultIndex("my-index")
.DefaultMappingFor<Company>(m => m.IndexName("company-index"))
.DefaultMappingFor<Employee>(m => m.IndexName("employee-index"));
var client = new ElasticClient(settings);

client.Index(new Company { Id = 1 })
client.Index(new Employee { Id = 1 })

Mehr ins Detail gehen die NEST-Entwickler im Blog seines Herstellers Elastic. Hier wird noch auf etliche weitere Änderungen und neue Features eingegangen. (map)