Elasticsearch NEST - SortAsceding不对文档进行排序

时间:2014-02-28 06:10:55

标签: sorting elasticsearch nest

我正在尝试根据字段名称对结果集进行排序。但Sort不适用于字符串类型。

尝试过的代码: -

public class Company
{
    public long Number { get; set; }
    public string Name{ get; set; }
}

我的问题是:当我使用SortAscending API时,不会进行排序,如下所示

var resultSet = client.Search<Article>(s => s
                            .Type("Company")
                            .From(0)
                            .Size(200)
                            .QueryString("Stack OverFlow")
                            .SortAscending(f => f.Name));

注意:如果我将字段名称设置为Number(f =&gt; f.Number)

,则文档会列为已排序

请帮忙

1 个答案:

答案 0 :(得分:4)

您在索引中的名称字段上排序的问题可能与正在分析/标记化字段的事实有关。来自Elasticsearch Sort Guide

  

对于基于字符串的类型,不应分析/标记化排序的字段。

因此,您需要提供一个未分析/标记化的附加字段来执行排序。您可以通过向文档添加其他字段并将该类型/字段的映射设置为not_analyzed来实现此目的,或者您可以利用multi_field(现在只是版本1.x中的fields)在您现有的名称字段上。有关如何完成以下任一选项的指导,请参阅以下内容: