高效地让 XML 进入 Elasticsearch

Efficiently getting XML into Elasticsearch

目前我正在使用 scrapy 将来自 ftp 服务器的大型 XML 文件解析到 elasticsearch 中。它有效,但似乎是一个重量级的解决方案,而且它也使用大量内存。

我想知道我是否最好为 ES 编写一个插件。我知道 logstash 可以做到,但我不能用它进行内联语言检测等。

A) 如果我为 ES 编写一个实际的插件,我认为它必须在 Java 中才能提取数据。这种方法有什么优势吗,或者我可以编写一个单独的 Python 脚本来代替推送数据。是否有任何明确的理由选择一种方法而不是另一种方法(假设我不知道 Java 或 Python)

归结为:

将 XML 转换为 JSON 是关于理解 XML 中实际数据的问题,因为转换为 JSON 并不容易,通常需要额外的逻辑。因此,没有防错的 XML>JSON 翻译器。

如果您决定使用 python 来做到这一点,请查看 eTree, lxml and xmltodict。 JSON 原生支持在 python 的标准库中。

如果您决定从 ES 方面试试运气,请查看 elasticsearch-xml。在 XML.

一致的情况下,它可能会满足您的需求

谈论 pythonjava 解析性能 - 如果性能对您来说很重要,您可以利用一些库,这些库已经在低级别进行了优化,但总的来说,很好 java 代码应该执行得更好。