2012-08-23 59 views
1

蔭使用Mpdreamz/NEST作爲.NET客戶端用於搜索elasticsearch循環。通過elasticsearch QueryResult中使用Mpdreamz/NEST

我正在使用result.Hits.Total搜索結果的結果計數。但我想知道如何從結果中顯示字段的值。

+0

請給答案http://stackoverflow.com/questions/26624786/display-elastic-search-hits-values-using-nest – BasK

回答

0

var result = client.Search(....)

將與類型的Documents財產返還AA QueryResult<dynamic>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

0

看着NEST源代碼,似乎你可以這樣做:

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

感謝快速回復..我試過這個,但我想從結果中顯示單個字段的值,例如「title」。 VAR結果= client.Search(S =>取值 的.index( 「algotest」)... \t .MatchAll() );這是我的搜索查詢。 – user1618820

+0

我修改了我的代碼示例。它現在工作嗎? –

+0

EXCEPTION:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:無法在CallSite.Target(Closure,CallSite,Object,String)上的空引用 上運行時綁定。 CallSite站點,T0 arg0,T1 arg1) 使用字符串Title = res.Fields [「title」]; – user1618820

相關問題