The text string sort will be segmented first. You can create the filed field first. And set it as keyword
mapping
public void Mapping() { var response = client.IndexExists("employee"); if (!response.Exists) { client.CreateIndex("employee"); } client.Map(m => m.Properties(p => p.Text(t => t.Name("last_name").Fielddata().Analyzer("english").Fields(f=>f .Keyword(k=>k.Name("raw"))))).AutoMap()); }
sort
public void Sort()
{
// client.Search(s => s. Query(q => q.Bool(b => b.Filter(f => f.Term(t => t.Field("last_name").Value("test01"))))).Pretty()) ;
client.Search(s =>
s.Query(q =>
q.ConstantScore(c =>
c.Filter(f =>
f.Term(t =>
t.Field("age").Value("26")
))))
.Sort(so =>
so.Descending("last_name")
)
.Pretty());
}
public void Mapping() { var response = client.IndexExists("employee"); if (!response.Exists) { client.CreateIndex("employee"); } client.Map(m => m.Properties(p => p.Text(t => t.Name("last_name").Fielddata().Analyzer("english").Fields(f=>f .Keyword(k=>k.Name("raw"))))).AutoMap()); }
public void Sort()
{
// client.Search(s => s. Query(q => q.Bool(b => b.Filter(f => f.Term(t => t.Field("last_name").Value("test01"))))).Pretty()) ;
client.Search(s =>
s.Query(q =>
q.ConstantScore(c =>
c.Filter(f =>
f.Term(t =>
t.Field("age").Value("26")
))))
.Sort(so =>
so.Descending("last_name")
)
.Pretty());
}