elasticsearch,locale,non-interactive,Encoding,Mono,elasticsearch,Locale,Non Interactive" /> elasticsearch,locale,non-interactive,Encoding,Mono,elasticsearch,Locale,Non Interactive" />

Encoding Elasticsearch将umlauts显示为“什么?”&引用;

Encoding Elasticsearch将umlauts显示为“什么?”&引用;,encoding,mono,elasticsearch,locale,non-interactive,Encoding,Mono,elasticsearch,Locale,Non Interactive,设置: 通过VMWare快速安装安装Ubuntu 12.04服务器 PostgreSQL 9.1 弹性搜索0.90 Mono 3.2.1 轨道4 Nginx 1.4.2+乘客4.0.16 我有一个C#程序,它在开始时编写一个新的ElasticSearch索引,并将rails应用程序使用的别名指向它,然后程序继续运行,并监视redis实例以获取更新 还有另一个C#程序,它从网页中抓取数据,一旦抓取的数据被放入Postgresql,上面的索引编写器就会通过Redis得到通知。这些页面具有不同的编

设置:

  • 通过VMWare快速安装安装Ubuntu 12.04服务器
  • PostgreSQL 9.1
  • 弹性搜索0.90
  • Mono 3.2.1
  • 轨道4
  • Nginx 1.4.2+乘客4.0.16
我有一个C#程序,它在开始时编写一个新的ElasticSearch索引,并将rails应用程序使用的别名指向它,然后程序继续运行,并监视redis实例以获取更新

还有另一个C#程序,它从网页中抓取数据,一旦抓取的数据被放入Postgresql,上面的索引编写器就会通过Redis得到通知。这些页面具有不同的编码,并转换为UTF-8

这个bug的第一次出现是我犯了一个错误,将已经是UTF-8的数据再次编码为UTF-8

调查

现在我想我显然有一些数据损坏,但奇怪的是:只有当我通过nohup从rails启动索引mono进程时,umlauts才被损坏,如果我杀死这个进程并从命令行手动启动它,它工作得非常好

当我备份/恢复数据库时,它会再次从web界面工作,但一旦服务器重新启动,umlauts将再次替换为??从web界面启动mono进程时

我做的第一件事是从数据库中清除受影响的行,然后再次刮取数据(没有对其进行两次编码),这没有帮助,因为只有在rails应用程序中通过nohup以非交互方式运行数据时才会出现错误,我认为这是由于区域设置的原因,所以我在这两种情况下都更改了该设置,/etc/defaults/locale和/etc/environment设置为en_US.UTF-8和en_US:en,但这也没有帮助

我真的不知道我还能做些什么,也不知道到底是什么导致了这个错误,如果有任何帮助,我将不胜感激


编辑:我忘了澄清最重要的部分,当umlauts被替换为索引中的每个文档中的所有UMLAUT都将被替换。

将其放入用于启动流程的脚本中:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
当您手动启动时,脚本仅拾取UTF-8的原因是这些东西不是系统范围的。我以前在jruby和init.d脚本中遇到过这种情况,解决方案是不依赖默认值