使用Haystack写入ElasticsearchDocumentStore缺content参数报错如何解决
报错根因
Haystack框架中Document类的构造方法要求必须传入必填参数content用于存储文档正文内容。你当前构造的待写入文档字典使用text作为正文内容的键,不符合Haystack默认的字段映射规则,框架在将字典转换为Document实例时找不到对应的值,触发参数缺失报错。
两种解决方案
方案1:修改文档字典的键名
直接将构造data_json时的text键替换为content,适配Haystack默认字段规则,修改后的对应代码如下:
data_json = [{ 'content': text, 'meta': { 'source': 'news' } } for text in df['Text'].values]
方案2:自定义文档存储的正文字段映射
如果你希望保留text作为字典的键,可以在初始化ElasticsearchDocumentStore时指定content_field参数,声明正文字段的自定义键名,修改后的初始化代码如下:
document_store = ElasticsearchDocumentStore( host='localhost', username='', password='', index='aurelius', content_field='text' )
验证
任选一种方案修改后重新运行代码,即可正常写入文档,不会再触发该参数缺失报错。
内容的提问来源于stack exchange,提问作者a.soltan
相关产品推荐
相关产品推荐

