我正在按照示例elasticsearch-net-example学习ElasticSearch。 错误发生在以下代码中:
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);
}
}
我尝试指定参数的类型,如下所示:
var result = Client.Index<FeedPackage>(package);
但这会导致另一个错误:
参数1:无法从“ NuSearch.Domain.Model.FeedPackage”转换为“ Nest.IIndexRequest” NuSearch.Indexer
您能告诉我我在做什么错吗?也许这个问题太简单了,但是我遇到了困难。
答案 0 :(得分:0)
据我了解,ElasticSearch无法通过输入值确定类型名称,因此您需要在第二个参数中添加其名称:
var result = Client.Index<FeedPackage>(package, i => i.Type("package"));
答案 1 :(得分:0)
我刚才有同样的问题。确保您使用的是正确的.net客户端版本。就我而言,我在使用客户端的7.x版本时正在寻找1.x版本的文档-可能很糟糕:)
当前版本位于此处:https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/nest-getting-started.html
答案 2 :(得分:0)
我刚刚遇到了同样的问题。如MiXaiL在其赞成的答案中建议将代码更改为var result = Client.Index<FeedPackage>(package, i => i.Type("package"));
无效,因为它无法编译。但是,只需将Index()
更改为IndexDocument()
会很漂亮:
var result = Client.IndexDocument(package);