以下是我繼續面對的情況,並且我懷疑我採用的解決方案是規範/智能方案。假設你有一個文件,每一行都是有效的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