在Elasticsearch索引中,我有几个字段正在引用主要类别的ID(例如,sector_id,country_id等)。
这些字段仅用于过滤(使用术语过滤器)和用于创建术语聚合的存储桶(以及其他)。
当前,它们中的每一个都使用最小的适当数字数据类型(例如,byte,short等)。
这是用于重型聚合的最佳数据类型吗?
还是应该使用关键字数据类型?
在此先感谢您的任何建议!
如果这些字段的值是数字,则应使用数字类型,如果它们是字符串,则应使用关键字类型。
要记住的一件事是,如果您想在某个时候在这些字段上运行range查询和/或range聚合,则应该优先使用数字类型,以便可以对这些值进行数字排序而不是按词法排序。
range
例如:如果您有国家ID(例如1、2、3,…,10、11、12,…,20,…)并且映射为关键字(即字符串),则如果您运行range使用对其进行查询(或聚合)from: 1, to: 3,您还将得到11、12、13等,因为在字符串世界中,11在词法上小于3。
from: 1, to: 3