我正在使用官方python库对elasticsearch上的数据进行索引:elasticsearch。使用cx_oracle python库直接从oracle获取数据,转换成文档格式并发送到elasticsearch索引。在大多数情况下,这是很好的工作,但有时我会遇到问题的字符,如。有时这个字符被索引为\xc3\xb8,有时被索引为xc3\xb8 8。即使在相同的数据库条目中也会发生这种情况。一个变量可以使索引正确,而另一个变量则不是这样。
有人知道是什么原因造成的吗?
提前感谢
发布于 2015-02-27 16:35:42
如果您的“”有时是正确的-有时不是,数据必须在您的数据库中损坏。这不是弹性搜索的问题。(一个月前我也遇到了同样的问题!)
包含各种编码的字符串很可能放在数据库中,而以前没有全部转换成单一格式。
text = "ö"
asUtf=text.encode('UTF-8')
print(asUtf)
print(asUtf.decode())结果:
b'\xc3\xb6‘ 舍尔
这个问题可以在插入Elasticsearch之前解决。找到与'\xXX\xXX‘匹配的文本序列,将它们视为UTF-8,并将它们解码为unicode。尝试对数据库进行消毒,并修复将信息放入数据库的方式。
PS:将信息从数据库转移到Elasticsearch的一个更好的做法是使用河文或创建一个脚本,直接将数据发送到Elasticsearch,而不首先将它们保存到文件中。
2016年编辑:现在河流被废弃了,所以你应该发现另一种就像伐木一样。
https://stackoverflow.com/questions/28604455
复制相似问题