我在Elasticsearch中索引了一些数据,在_source中,我有一个字段来存储文件大小:
{“file_size”:“25.2MB”}
{“file_size”:“2GB”}
{“file_size”:“800KB”}
当前,该字段的映射是字符串。我想搜索按file_size排序。我想我需要将映射更改为整数并重新索引。
如何计算字节大小并将其重新索引为整数?
最佳答案
Elasticsearch不支持字段重新索引,因为lucene
索引中的文档是不可变的。因此,在内部,每个文档都需要获取,更改,索引回索引和旧副本。实际所需的内容无关紧要-更改映射或更改数据。
因此,关于实际部分。简单的方法:
file_size
字段更改为整数因此,应用程序端将包含其他逻辑,以将数据从人类可读的字符串转换为
Long
+标准ES驱动程序功能。为了加快此过程,请考虑使用 scroll-scan
进行读取,并使用 bulk api
进行写入。为了将来,我建议使用aliases来无缝迁移数据。万一由于某种原因而无法进行服务器端更改时,可以潜在地添加具有正确映射的新字段,并使用scripted partial updates()启动ES端更新。或者尝试用experimental plugin运气好
关于sorting - 如何将Elasticsearch中的字段值从字符串更改为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29558580/