在与ElasticSearch 5的聚合中使用的最合适的数据类型是什么:numeric或keyword?

时间:2016-11-24 09:54:16

标签: elasticsearch elasticsearch-5

在Elasticsearch索引中,我有一些引用主要类别ID的字段(例如sector_id,country_id等...)。

这些字段仅用于过滤(使用术语/术语过滤器)以及用聚合(等等)创建存储桶。

它们中的每一个当前都使用最小的合适数值数据类型(例如byte,short等)。

这是用于重聚合的最佳数据类型吗?

或者这些是否应该使用关键字数据类型?

提前感谢任何建议!

1 个答案:

答案 0 :(得分:2)

如果这些字段的值是数字,则应该使用数字类型,如果它们是字符串,则转到关键字类型。

要记住的一件事是,如果您想在某些时刻对这些字段运行range个查询和/或range聚合,您应该更喜欢预先使用数字类型,以便那些值可以按数字排序,而不是词法排序。

例如:如果您有国家/地区ID,例如1,2,3,...,10,11,12,...,20,...并且它们被映射为关键字(即字符串),那么你使用range对它们运行from: 1, to: 3查询(或聚合),你也会得到11,12,13等,因为在字符串世界中,11在词法上小于3。 / p>