2016-02-10 59 views
0

NEST中是否有任何調試?我浪費了很多時間,沒有任何錯誤代碼。我沒有返回數據,但數據存在。代碼如下 -Elasticsearch&NEST with .NET - 無數據返回

 Uri node; 
     ConnectionSettings settings; 
     //ElasticClient client; 

     node = new Uri("https://.......qb0x.com:30950"); 
     settings = new ConnectionSettings(node, defaultIndex: "soogrindex"); 
     var client = new ElasticClient(settings); 


     SearchResults sr = new SearchResults(); 


     var searchDataResults = client.Search<SearchRow>(s=>s.AllIndices().AllTypes().Query(q=>q.Term(p=>p.partnumber, "*"))); 

任何想法如何調試?它只是沒有返回。 Ubuntu中的curl顯示那裏的數據。 .net在windows下。

+0

你能提供數據的例子嗎?只是你的文檔的示例json。看來這個查詢是錯誤的。 –

+0

curl -XGET'https://23ebed6f82b55e4b7cf1:[email protected]:30950/soogrindex/_search?q = partnumber:Test *' {「took」:5,「timed_out」:false,「_ shards」: { 「總」:4, 「成功」:4, 「失敗」:0}, 「命中」:{ 「總」:390, 「MAX_SCORE」:1.0, 「命中」:[{ 「_索引」: 「soogrindex」 ,「_ type」:「searchrow」,「_ id」:「AVLFwBYtaAnYOoMODY4R」,「_ score」:1.0,「_ source」:{ 「partid」:2, 「partnumber」:「Test2」 –

+0

你可以試試這個: var searchDataResults = client.Search (s => s.AllIndices()。AllTypes()); –

回答

0

解決方案是關於案例,數據具有「Test2」,但搜索未能匹配「Test2」,但「test2」有效。我不知道爲什麼,但必須在ES中設置默認值。

這裏是經校正的形式 -

var searchDataResults = client.Search<SearchRow>(s=>s.AllIndices().AllTypes().Query(q=>q.Term(p=>p.partnumber, "test2"))); 
+0

如果您使用默認配置和映射爲'string'字段建立索引,那麼該字段的值將由「標準分析器」進行分析,除此之外,該標準分析器將小寫從輸入生成的任何令牌並將其存儲在倒排索引。一個'term'查詢的輸入不會在查詢時間進行分析,因此如果您希望查找與索引時間已分析的字段相匹配的結果,則需要考慮如何分析它。如果您需要支持全文搜索*和*完全匹配字符串字段,則可以將其映射爲'multi_field' –