【发布时间】:2012-08-23 06:20:18
【问题描述】:
我使用 Mpdreamz/NEST 作为 .net 客户端来搜索 elasticsearch。
我正在使用result.Hits.Total 获取搜索结果的结果计数。但我想知道如何从结果中显示字段的值。
【问题讨论】:
标签: c# elasticsearch nest
我使用 Mpdreamz/NEST 作为 .net 客户端来搜索 elasticsearch。
我正在使用result.Hits.Total 获取搜索结果的结果计数。但我想知道如何从结果中显示字段的值。
【问题讨论】:
标签: c# elasticsearch nest
var result = client.Search(....)
将返回一个QueryResult<dynamic> 和一个Documents 类型为IEnumerable<dynamic> 的属性您可以像这样循环:
foreach(var d in result.Documents)
{
Console.WriteLine(d.title);
}
这里的大小写很重要d.Title 将导致 RuntimeBinderException。除非您的 elasticsearch 字段实际上完全匹配 'Title`
你也可以映射到POCO的
public class MyResult
{
public string Title { get; set; }
}
...
var result = client.Search<MyResult>(....)
现在Documents 是一个IEnumerable<MyResult>,它将为您提供编译时间保证属性存在。
除非您正在处理用户输入,否则您不必访问.Fields["field"]。
result.Total 也优于 result.Hits.Total
【讨论】:
查看 NEST 源代码,您似乎可以执行以下操作:
foreach (var item in result.Documents.ToList())
{
string msg = "Name: " + item.Name + " | Value: " + item.Text;
alert(msg);
}
【讨论】:
res对象是null那么。您能否提供更多应用程序代码?