如何将大型数据集上传到AWS Elasticsearch集群?

时间:2019-05-17 05:28:29

标签: python elasticsearch

我有一个AWS ElasticSearch集群,并在其上创建了一个索引。 我想在该索引中上传一百万个文档。 我正在使用Python软件包Elasticsearch版本6.0.0。

我的有效负载结构与此相似-

{  
   "a":1,
   "b":2,
   "a_info":{  
      "id":1,
      "name":"Test_a"
   },
   "b_info":{  
      "id":1,
      "name":"Test_b"
   }
}

在注释部分进行讨论之后,我意识到文档中的字段总数还包括其子字段。因此,就我而言,每个文档中的字段总数达到60个。

我尝试了以下方法-

  1. 按照文档(https://elasticsearch-py.readthedocs.io/en/master/api.html#elasticsearch.Elasticsearch.bulk)中所述使用Bulk()接口。 我使用此方法收到的错误是-
    • 等待约10-20分钟后超时响应。

在这种方法中,我还尝试了批量上传100个文档,但是仍然超时。

  1. 我还尝试了根据文档(https://elasticsearch-py.readthedocs.io/en/master/api.html#elasticsearch.Elasticsearch.create)一一添加文档 此方法需要花费大量时间来创建甚至一个文档的上载。 此外,我在一些文档中都遇到了此错误-
TransportError(500, u'timeout_exception', u'Failed to acknowledge mapping update within [30s]')

我的索引设置是这些-

{"Test":{"settings":{"index":{"mapping":{"total_fields":{"limit":"200000000"}},"number_of_shards":"5","provided_name":"Test","creation_date":"1557835068058","number_of_replicas":"1","uuid":"LiaKPAAoRFO6zWu5pc7WDQ","version":{"created":"6050499"}}}}}

我是ElasticSearch域的新手。如何快速将文档上传到AWS ES Cluster?

0 个答案:

没有答案