低级弹性搜索无法正常工作

时间:2017-04-13 10:51:20

标签: elasticsearch

我正在尝试使用排序选项进行弹性搜索。我的查询是这样的:

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" } } ] } 

任何人,如果我在这里遗漏了某些东西,请提出建议。

1 个答案:

答案 0 :(得分:0)

找到解决方案。 使用ElasticLowLevelClient而不是ElasticClient。 代码是这样的:

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

查询中的一个更改

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