Elasticsearch performance tuning guide指出:
某些数据是数字的事实并不意味着应始终将其映射为数字字段。 Elasticsearch索引数字的方式可优化范围查询,而关键字字段则更适合术语查询。通常,在范围查询或聚合中很少使用存储标识符(例如ISBN或标识另一个数据库的记录的任何数字)的字段。 这就是为什么将它们映射为关键字而不是整数或long的原因。
但是,这使得对于仅用于聚合的数字数据选择哪种数据类型有疑问?
例如,从Java枚举填充的字段应使用其序号值存储(如果您更关心性能而不是可读性)。但这仍然给您两个选择:将它们存储为0、1、2,...(整数)或“ 0”,“ 1”,“ 2”,...(关键字)。
如果我经常在这样的字段上进行汇总,而又在术语查询中使用的次数不多,那么从性能角度来看,我应该选择两个选项中的哪个?