Nous avons du code qui devra bientôt interroger les index ElasticSearch 6.x et 7.x. Nous utilisons actuellement NEST pour parler à nos instances ES, mais en regardant sur le Web, il semble que le client NEST v6 ne fonctionne pas lorsque vous parlez à ES 7.x. La réponse évidente est de passer à la v7 de NEST, mais je ne trouve aucune information sur la compatibilité du client v7 NEST.
Si nous mettons à niveau notre client NEST vers la version qui fonctionne avec ElasticSearch 7.x, ce client pourra-t-il également parler aux instances d'ElasticSearch 6.x?
3 réponses
Vous pouvez trouver la matrice de compatibilité du client ici . Il est probable qu'il y ait des changements majeurs et que vous ne pourrez pas travailler avec elasticsearch 6.x lors de l'utilisation de NEST 7.x.
Si vous souhaitez travailler avec elasticsearch 7.x, vous devez installer NEST dans la version 7.0 .0beta1.
Basé sur la documentation
Elasticsearch 7.0 peut lire les index créés dans la version 6.0 ou supérieure. Un nœud Elasticsearch 7.0 ne démarrera pas en présence d'index créés dans une version d'Elasticsearch antérieure à 6.0.
Quelques changements de rupture que j'ai remarqués:
NEST 6.8 avec ES 7.3.1:
- Il existe des erreurs de sérialisation dans la bibliothèque que vous ne pouvez pas contourner, à savoir avec l'API de recherche.
- Ajouter le paramètre Include Types = true à l'API Mappings
NEST 7.3.1 avec ES 6.8
- La route API pour la mise à jour partielle des documents est différente dans ES 7, le client NEST ne génère pas la route correcte pour effectuer les mises à jour.
- Le paramètre Intervalle d'histogramme de date est obsolète mais ne corrige pas l'avertissement
- La réponse de mappage get ne se désérialise pas en un objet C # utilisable avec des propriétés.
Quelques jours plus tard, Elasticsearch publie un blog expliquant comment le faire fonctionner https://www.elastic.co/blog/ nest-and-elasticsearch-net-upgrade-your-codebase
Questions connexes
De nouvelles questions
c#
C # (prononcé "see sharp") est un langage de programmation multi-paradigme de haut niveau, typé statiquement développé par Microsoft. Le code C # cible généralement la famille d'outils et d'exécutions Microsoft .NET, notamment le .NET Framework, .NET Core et Xamarin. Utilisez cette balise pour les questions sur le code écrit en C # ou en spécification formelle de C #.