使用Mpdreamz / NEST循环使用elasticsearch queryresult

时间:2012-08-23 06:20:18

标签: c# elasticsearch nest

我使用Mpdreamz / NEST作为.net客户端来搜索elasticsearch。

我使用result.Hits.Total获取搜索结果的结果计数。但我想知道如何从结果中显示字段的值。

2 个答案:

答案 0 :(得分:0)

查看NEST源代码,您似乎可以执行以下操作:

foreach (var item in result.Documents.ToList())
{
    string msg = "Name: " + item.Name + " | Value: " + item.Text;
    alert(msg);
}

答案 1 :(得分:0)

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>(....)

现在DocumentsIEnumerable<MyResult>,它将为您提供编译时保证属性存在。

除非您正在处理用户输入,否则您不必访问.Fields["field"]

result.Total也优先于result.Hits.Total