哪种数据类型最适合用于 ElasticSearch 5 的聚合:数字还是关键字?
What is the most suitable datatype to use in aggregations with ElasticSearch 5: numeric or keyword?
在 Elasticsearch 索引中,我有几个引用主要类别 ID 的字段(例如 sector_id、country_id 等)。
这些字段仅用于过滤(使用 term/terms 过滤器)和根据聚合(以及其他)创建存储桶。
他们每个人目前都在使用最小的合适的数字数据类型(例如 byte、short 等)
这是用于大量聚合的最佳数据类型吗?
或者这些应该使用关键字数据类型?
提前感谢您的任何建议!
如果这些字段的值是数字,你应该选择数字类型,如果它们是字符串,那么选择关键字类型。
要记住的一件事是,如果您想 运行 range
在某些时候查询 and/or range
这些字段的聚合,您应该更喜欢使用前面的数字类型,以便可以按数字而不是词汇对这些值进行排序。
例如:如果您有 1、2、3、...、10、11、12、...、20 等国家/地区 ID,并且它们被映射为关键字(即字符串)然后如果你 运行 使用 from: 1, to: 3
对它们进行 range
查询(或聚合),你还会得到 11、12、13 等,因为在字符串世界中,11 在词法上更小比 3.
在 Elasticsearch 索引中,我有几个引用主要类别 ID 的字段(例如 sector_id、country_id 等)。
这些字段仅用于过滤(使用 term/terms 过滤器)和根据聚合(以及其他)创建存储桶。
他们每个人目前都在使用最小的合适的数字数据类型(例如 byte、short 等)
这是用于大量聚合的最佳数据类型吗?
或者这些应该使用关键字数据类型?
提前感谢您的任何建议!
如果这些字段的值是数字,你应该选择数字类型,如果它们是字符串,那么选择关键字类型。
要记住的一件事是,如果您想 运行 range
在某些时候查询 and/or range
这些字段的聚合,您应该更喜欢使用前面的数字类型,以便可以按数字而不是词汇对这些值进行排序。
例如:如果您有 1、2、3、...、10、11、12、...、20 等国家/地区 ID,并且它们被映射为关键字(即字符串)然后如果你 运行 使用 from: 1, to: 3
对它们进行 range
查询(或聚合),你还会得到 11、12、13 等,因为在字符串世界中,11 在词法上更小比 3.