2017-04-13 15 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

解決策が見つかりました。 ElasticClientの代わりにElasticLowLevelClientを使用しました。また、クエリ内の

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); 

1つの変更

match = new { title = "7-0 v Spurs" } 
: コードは次のようです
関連する問題