我正在尝试根据字段名称对结果集进行排序。但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)
,则文档会列为已排序请帮忙
答案 0 :(得分:4)
您在索引中的名称字段上排序的问题可能与正在分析/标记化字段的事实有关。来自Elasticsearch Sort Guide:
对于基于字符串的类型,不应分析/标记化排序的字段。
因此,您需要提供一个未分析/标记化的附加字段来执行排序。您可以通过向文档添加其他字段并将该类型/字段的映射设置为not_analyzed
来实现此目的,或者您可以利用multi_field
(现在只是版本1.x中的fields
)在您现有的名称字段上。有关如何完成以下任一选项的指导,请参阅以下内容: