如何在python的elasticsearch中索引大型json响应?使用Elasticsearch DSL

如何在python的elasticsearch中索引大型json响应?使用Elasticsearch DSL,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我在文档中发现了这种方法: 和索引一样 # create and save and article article = Article(meta={'id': 42}, title='Hello world!', tags=['test']) article.body = ''' looong text ''' article.published_from = datetime.now() article.save() 但这种方法不适合我,因为我有非常大的JSON,包含超过100个字段,而且

我在文档中发现了这种方法:

和索引一样

# create and save and article
article = Article(meta={'id': 42}, title='Hello world!', tags=['test'])
article.body = ''' looong text '''
article.published_from = datetime.now()
article.save()
但这种方法不适合我,因为我有非常大的JSON,包含超过100个字段,而且我有多个JSON,就像那样。以这种形式转换JSON是很困难的:

article = Article(meta={'id': 42}, title='Hello world!', tags=['test'])

有什么想法吗?如何直接索引json而不使用类似于包装器的模型?您应该能够使用json的dict结构,而无需将所有内容转换为DSL。只需使用普通的elasticsearch客户端,例如,请参见此处的低级别客户端示例:


请注意,如果您有大量文档,那么使用批量导入API非常有用,它可以更快。我也使用了它,但我的json中也有日期字段,elasticsearch检测日期,并给出RequestError(400,'非法参数\异常','映射器[table.rows.endDate]不同的类型,当前类型[日期],合并类型[文本]),解决方案是设置index.mapping.ignore\u格式不正确:false。但我不知道在代码中在何处设置此设置?以下是我所问问题的链接:[第一个答案提供了如何设置ignore\u Malformedb的答案,但它正在为此使用elasticsearch dsl:/您应该能够在保存文档时设置此选项,请搜索您尝试将文章实例转换为json的文档。\uuuu dict\uuuu magic method?我不想使用此方法。在本示例文章中(meta)={'id':42},title='Hello world!',tags=['test'])只包含3个参数,在我的例子中有100多个字段。我已经有了json,所以不需要magic dict方法。我只想直接索引它,而不需要上述方法。好的,所以你需要在json中发送带有文档的dict{''u op_type':'index','u index':'index name','u type':'article','u source':,}然后使用批量方法,查看以下内容:
article = Article(meta={'id': 42}, title='Hello world!', tags=['test'])