我正在使用ElasticSearch6.8版。我想存储一个标识符(由字母、数字和可能的空格组成的字符串)。我将在该字段上使用的唯一筛选器是 exists
过滤器(我将检查是否设置了值)。使用 keyword
类型或a text
类型?对于 text
我可能可以设置的类型
"norms": false,
"index_options": "freqs"
以减小索引大小。
文件指出,由于这是“结构化”文本,最好的选择是使用 keyword
类型,但由于可能值的数量很大(这是一个id),恐怕这会占用大量磁盘空间。
我有一个包含数百万条记录的索引,所以我想保持这个字段的磁盘使用率较低。关于磁盘空间,哪个选项是最好的,对性能有什么影响?
1条答案
按热度按时间g6baxovj1#
因为您不想搜索此字段的值或对其运行聚合,所以应该将此字段存储为
keyword
与doc_values
已禁用。禁用
doc_values
将为您节省磁盘空间。字段Map为
text
没有doc_values
启用并可以使用较少的空间,但它们会被分析并占用内存空间。如果您根本不关心字段的值,您甚至可以在接收期间将其更改为简单字符串或单个数字,具体取决于您接收数据的方式。