我应该为Elasticsearch中的文档personId选择关键字的数据类型还是长整数?

时间:2017-11-28 22:59:53

标签: elasticsearch

我有一个带有personId的文档(在DB中是一个int)。

我不确定在Elasticsearch中创建文档时应该选择keyword还是long

就空间和性能而言,每个人的利弊是什么? (我只找到textkeyword之间的差异,而不是keywordlong之间的差异

3 个答案:

答案 0 :(得分:4)

某些数据是数字的事实并不意味着应始终将其映射为数字字段。 Elasticsearch索引数字的方式可优化范围查询,而关键字字段则更适合术语查询。通常,在范围查询或聚合中很少使用存储标识符(例如ISBN或标识另一个数据库的记录的任何数字)的字段。这就是为什么将它们映射为关键字而不是整数或long的原因。

引自https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-search-speed.html#_consider_mapping_identifiers_as_literal_keyword_literal

答案 1 :(得分:1)

如果你的personId是数据库中的int,我也会选择ES中的myFunction([1,2,2,4,5], function(result){ console.log(result); }) 类型。

function callBack(result){console.log(result);} myFunction([1,2,2,3,4], callBack); 更适合您不希望通过分析过程并仅存储为精确值的字符串数据。没有整数值这样的东西,你只想存储它的确切值,这正是long类型所做的。

答案 2 :(得分:0)

long类型的一个缺点是它阻止您使用“突出显示”功能。