2017-04-13 123 views
0

我正在嘗試使用排序選項進行彈性搜索。我的查詢是這樣的:低級彈性搜索無法正常工作

var client = new ElasticClient(settings); 

var query = new 
{ 
    query = new 
    { 
     term = new { title = "7-0 v Spurs" } 
    }, 
    Sort = new List<ISort> 
    { 
     new SortField { Field = "releaseFrom", Order = SortOrder.Descending } 
    } 
}; 

,我的搜索是這樣的:

var stream = new MemoryStream(); 
client.Serializer.Serialize(query, stream); 
var jsonQuery = System.Text.Encoding.UTF8.GetString(stream.ToArray()); 
var qRequest = new SearchRequest(jsonQuery); 
var searchResponse = client.LowLevel.Search<SearchResponse<dynamic>>(IndexingService.IndexName, "article_en", qRequest); 

我得到的結果,但它返回不匹配的標題記錄,也不會進行排序。

這是生成的查詢:

{ "query": { "term": { "title": "7-0 v Spurs" } }, "sort": [ { "releaseFrom": { "order": "desc" } } ] } 

任何人,有建議,如果我在這裏錯過什麼。

回答

0

找到了解決方案。 使用ElasticLowLevelClient而不是ElasticClient。 代碼是這樣的:在查詢還

match = new { title = "7-0 v Spurs" } 

var lowlevelClient = new ElasticLowLevelClient(settings); 


var stream = new MemoryStream(); 
    lowlevelClient.Serializer.Serialize(query, stream); 
    var jsonQuery = System.Text.Encoding.UTF8.GetString(stream.ToArray()); 



var searchResponse = lowlevelClient.Search< SearchResponse<dynamic>>(IndexingService.IndexName, "article_en", jsonQuery); 

一個變化