以下是我继续面对的情况,并且我怀疑我采用的解决方案是规范/智能方案。假设你有一个文件,每一行都是有效的JSON。此外,每个对象都包含一个字段type
和id
,这些对是唯一的。我的目标是将所有对象索引到ES群集的索引中。到目前为止,我花了两个方法:将许多JSON对象索引到Elasticsearch中 - 规范方式
使用bulk
API一起使用jq
类似:
$ cat foo.json | jq -c '. | {"index": {"_index": "your_test_index", "_type": "doc_type"}}, .' | curl -XPOST localhost:9200/_bulk --data-binary @-
这工作很完美,但它是超慢。
我也尝试过使用Python客户端,但仍然需要逐行读取并逐一索引它们。
是否有某种方式来“推”整个文件并指示ES以相同的方式处理所有行?换句话说,以批处理方式索引大量JSON对象的有效方法是什么?
你能定义“大”吗?你有多少行/文档,每个文档有多大? – Val
例如:20-30M文件和总计6-10GB – Dror