Elasticsearch术语聚合自然排序

时间:2018-08-27 14:35:43

标签: javascript elasticsearch elasticsearch-aggregation

我正在使用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。

  • 1名美国青年(38)
  • 1个青年(3)
  • 10个幼儿(3)
  • 10个美国幼儿(48)
  • 11个孩子(3)
  • 2美国青年(37)

使用ElasticSearch是否可以对聚合进行自然排序?

1 个答案:

答案 0 :(得分:1)

要进行正确的自然排序,您需要将数字填充为零(前提是您知道最大值)。例如,假设最大值为99,则字符串“ 1 Youth”应变为“ 01 Youth”。

如果没有第三方插件,则无法自动执行。在Google中通过“ elasticsearch natural sort”一词进行的快速搜索会导致生成this插件,但该插件似乎不太活跃。