gpt4 book ai didi

python - 使用Python UTF-8问题进行Elasticsearch索引编制

转载 作者:行者123 更新时间:2023-12-03 02:04:00 26 4
gpt4 key购买 nike

我正在为此使用官方python库在elasticsearch上建立数据索引:elasticsearch-py。数据使用cx_oracle python库直接从oracle中获取,转换为文档格式,并发送索引以供Elasticsearch使用。在大多数情况下,此方法效果很好,但有时我会遇到诸如ö这样的字符的问题。有时,此字符索引为\ xc3 \ xb8,有时索引为ö。即使在同一数据库条目中,也会发生这种情况。一个变量可以将ö索引正确,而对于另一个变量则不是这样。

任何人都知道是什么原因造成的吗?

提前致谢

最佳答案

如果您的“ö”有时正确(有时不正确),则数据库中的数据必须已损坏。这不是Elasticsearch的问题。 (一个月前我遇到了完全相同的问题!)
具有各种编码的字符串可能会放入数据库中,而之前没有全部都转换为单一格式。

text = "ö"
asUtf=text.encode('UTF-8')
print(asUtf)
print(asUtf.decode())
结果:

b'\xc3\xb6'

ö


在插入Elasticsearch之前可以解决此问题。查找与“\ xXX \ xXX”匹配的文本序列,将其视为UTF-8并将其解码为unicode。尝试清理数据库并修复将信息放入内部的方式。
PS:将信息从数据库移至Elasticsearch的一种更好的做法是使用 rivers或制作一个脚本,该脚本将数据直接发送到Elasticsearch,而无需先将其保存到文件中。
2016编辑:现在不建议使用河流,因此您应该找到logtash之类的 an alternative

关于python - 使用Python UTF-8问题进行Elasticsearch索引编制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28604455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com