java - 高效地将 XML 引入 Elasticsearch

标签 java python xml elasticsearch

目前我正在使用 scrapy 将一个大型 XML 文件从 ftp 服务器解析到 elasticsearch 中。它可以工作,但似乎是一个相当重量级的解决方案,并且它也使用大量内存。

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

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

这归结为:

  • 使用实际的 ES 插件,内存管理会更好吗
  • Java 是否比 Python 更适合处理 XML?

最佳答案

将 XML 转换为 JSON 是一个关于理解 XML 中实际数据的问题,因为转换为 JSON 并不那么容易,并且通常需要额外的逻辑。因此,不存在防错 XML>JSON 转换器。

如果您决定使用 python 来执行此操作,请查看 eTree , lxmlxmltodict 。 JSON 支持位于 python 的 stdlib 中。

如果您决定从 ES 方面碰碰运气,请查看 elasticsearch-xml 。在 XML 一致的情况下它可能会满足您的需求。

谈论 pythonjava 解析性能 - 如果性能对您来说很关键,您可以利用一些已经在低级别优化的库,但是一般来说,好的java代码应该表现得更好。

关于java - 高效地将 XML 引入 Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29433708/

相关文章:

android - 如何设置布局边距以匹配其他布局起点

python - 将 pandas 中周五的值复制到下周六

java - 如何防止 JAXB 在编码时绑定(bind) @XmlRootElement 的父类(super class)方法?

android - 我怎样才能在android中为textview实现这个自定义形状?

java - 如何使用java从xml文件中提取细节?

python - 模板片段缓存似乎不适用于某些自定义模板标签

python - 在 PyGObject 3.16 中为贬值的 Gtk 3.10+ 库存按钮实现替换标签

java - 使用 MyBatis 进行批量预缓存

java - Gson:解析泛型集合

java - MySQL:未知系统变量 'tx_read_only'