我正在使用Elasticsearch进行聚合的产品类别页面。据我所知,ES只能执行“ _count”,“ _ term”并通过子聚合来对DSL的聚合结果进行排序。
我的汇总字段是一个字符串字段,未进行分析,但包含诸如“ 23 EU,24 EU,23 Toddler等”的文档。
这是我使用Elastic-builder软件包的代码段
"aggs":{
"ProductFilters.Size":{
"terms":{
"field":"ProductFilters.Size",
"size":52,
"order":{
"_term":"asc"
}
}
},
"ProductFilters.Size_count":{
"cardinality":{
"field":"ProductFilters.Size"
}
}
}
但是此代码会生成这样的结果。我希望产生这样的结果,就像人类希望1以后不是10,而是2。
使用ElasticSearch是否可以对聚合进行自然排序?
答案 0 :(得分:1)
要进行正确的自然排序,您需要将数字填充为零(前提是您知道最大值)。例如,假设最大值为99,则字符串“ 1 Youth”应变为“ 01 Youth”。
如果没有第三方插件,则无法自动执行。在Google中通过“ elasticsearch natural sort”一词进行的快速搜索会导致生成this插件,但该插件似乎不太活跃。