2014-02-13 137 views
1

已解決: URI不正確。是「h || p://#.#.#.#/:9200」,應該是「h || p://#.#.#.#:9200」。這導致API將端口號更改爲80.令人驚訝的是,API實際上能夠使用不正確的端口號連接到ElasticSearch實例。ElasticSearch和NEST查詢問題

我是NEST和ElasticSearch的新手,嘗試在NEST中放置一個簡單的MatchAll查詢。

當我從感

POST /movies/movie/_search 
{ 
    "query": { 
    "match_all": {} 
    } 
} 

我得到了電影指數中的所有影片對象進行MatchAll。

但是當我嘗試了NEST查詢

var result = client.Search(s => s.Type("movie").MatchAll()); 

我得不到任何回報。嘗試將返回類型設置爲電影類,但仍然沒有結果。

public class Movie 
    { 
     public string title { get; set; } 
     public string director { get; set; } 
     public int year { get; set; } 
     public List<string> genres { get; set; } 
    } 

也試過.AllIndices()和/或每此回覆 Searching an elasticsearch index with NEST yields no results

任何想法.AllTypes()?

編輯: 繼承人連接字符串設置默認索引。

ConnectionSettings connection = new ConnectionSettings(uri).UsePrettyResponses().SetDefaultIndex("movies"); 

回答

1

你必須檢查IsValidresult,看是否調用成功與否。

result.ConnectionStatus將包含您需要的所有信息以確定出錯的地方。上ConnectionStatus對象打印

.SetConnectionStatusHandler(c=> { 
    if (!c.Success) 
     throw new Exception(c.ToString()); 
}) 

ConnectionSettings

調用toString人類可讀的所有請求和響應的細節:

如果你想拋出異常,而不是您可以啓用通過調用形成。

+0

感謝您的回覆Martijn。 Intersting IsValid()方法實際上是在IQueryResponse對象中,而不是像文檔狀態那樣的ElasticClient。 http://nest.azurewebsites.net/concepts/connecting.html – user19055