目前我正在使用scrapy将ftp服务器中的大型XML文件解析为elasticsearch。它有效,但似乎是一个非常重的解决方案,它也使用了大量的内存。
我想知道我是否更喜欢为ES编写插件。我知道logstash可以做到这一点,但我不能用内联语言检测等。
A)如果我为ES编写一个实际的插件,我认为必须使用Java来提取数据。这种方法有什么优势,或者我可以编写一个单独的Python脚本来代替推送数据。有没有明确的理由选择一种方法而不是另一种方法(假设我不懂Java或Python)
这归结为:
答案 0 :(得分:2)
将XML转换为JSON对于理解XML中的实际数据是一个相当大的问题,因为转换为JSON并不是那么容易,通常需要额外的逻辑。出于这个原因,没有防错的XML> JSON翻译器。
如果您决定使用python执行此操作,请查看eTree
,lxml
和xmltodict
。 JSON支持本身就是python
的stdlib。
如果您决定尝试ES方面的运气,请查看elasticsearch-xml
。在一致的XML情况下,它可能符合您的需求。
谈论python
vs java
解析性能 - 如果性能对你来说很关键,你可以利用一些已经在低级优化的库,但一般来说,优秀的java代码应该是表现更好。