目前我正在使用 scrapy 将一个大型 XML 文件从 ftp 服务器解析到 elasticsearch 中。它可以工作,但似乎是一个相当重量级的解决方案,并且它也使用大量内存。
我想知道我是否最好为 ES 编写一个插件。我知道logstash可以做到这一点,但我不能用它来做内联语言检测等。
A) 如果我为 ES 编写一个实际的插件,我认为它必须使用 Java 来提取数据。这种方法有什么优点吗?或者我可以编写一个单独的 Python 脚本来推送数据吗?选择一种方法而不是另一种方法是否有任何明确的理由(假设我不了解 Java 或 Python)
这归结为:
- 使用实际的 ES 插件,内存管理会更好吗
- Java 是否比 Python 更适合处理 XML?
最佳答案
将 XML 转换为 JSON 是一个关于理解 XML 中实际数据的问题,因为转换为 JSON 并不那么容易,并且通常需要额外的逻辑。因此,不存在防错 XML>JSON 转换器。
如果您决定使用 python 来执行此操作,请查看 eTree
, lxml
和 xmltodict
。 JSON 支持位于 python
的 stdlib 中。
如果您决定从 ES 方面碰碰运气,请查看 elasticsearch-xml
。在 XML 一致的情况下它可能会满足您的需求。
谈论 python
与 java
解析性能 - 如果性能对您来说很关键,您可以利用一些已经在低级别优化的库,但是一般来说,好的java代码应该表现得更好。
关于java - 高效地将 XML 引入 Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29433708/