2016-02-10 61 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' –