以数值为数字对字符串字段进行排序



我有一个字符串类型的字段。它总是违反数字

"id": { "type": "string", "analyzer": "case_insensitive_sort" }

例如12、111、113、2。但是我不能将现场类型更改为nuber

我如何在不将id更改为另一种类型的情况下排序也许在ES中存在一些分类?

您可以使用它来对存储在字符串中的数字进行排序。它对我有用。

//Order to sort the list. Can be fetched as an  input field
var sortOrder= "asc";
var sortDescriptor = new SortScriptDescriptor<MyDocument>();
//Query to sort which can be customised
var sortQuery = sortDescriptor                 
               .Type("number")
               .Order(sortOrder == "asc" ? Nest.SortOrder.Ascending : Nest.SortOrder.Descending).Script(sc => sc
               .Source("Float.parseFloat(doc["numbered-number"].value)"));
var result = client.Search<MyDocument>(s => s
                   .Index("yourIndexName")
                   .Sort(so => sortQuery)
              );

最新更新