J'apprends ElasticSearch en suivant l'exemple elasticsearch-net- exemple . L'erreur se produit dans le code suivant:
var result = Client.Index<FeedPackage>(package);
J'ai essayé de spécifier le type de l'argument comme suit:
foreach (var package in packages) { var result = Client.Index(package); <--The type arguments for method 'ElasticClient.Index<T>(IIndexRequest<T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly. if (!result.IsValid) { Console.WriteLine(result.DebugInformation); Console.Read(); Environment.Exit(1); } }
mais cela conduit à une autre erreur:
Argument 1: impossible de convertir de «NuSearch.Domain.Model.FeedPackage» en «Nest.IIndexRequest» NuSearch.Indexer
Pouvez-vous me dire ce que je fais faux? La question est peut-être trop simple, mais j'ai eu des difficultés avec elle.
3 Réponses :
Si je comprends bien, ElasticSearch n'a pas pu déterminer le nom du type par la valeur d'entrée, vous devez donc ajouter son nom dans le deuxième paramètre:
var result = Client.Index<FeedPackage>(package, i => i.Type("package"));
J'ai eu le même problème il y a à peine une minute. Assurez-vous que vous utilisez la bonne version du client .net. Dans mon cas, je cherchais doc pour la version 1.x en utilisant la version 7.x du client - peut-être mauvais :)
La version actuelle est disponible ici: https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/nest-getting-started.html
Je viens de rencontrer le même problème. Changer le code en var result = Client.Index
comme MiXaiL l'a suggéré dans sa réponse votée ne fonctionne pas car il a gagné ' t compiler. Cependant, changer simplement Index ()
en IndexDocument ()
fonctionne à merveille:
var result = Client.IndexDocument(package);