您好我正在尝试按照
将文档添加到cloudsearch域http://docs.pythonboto.org/en/latest/cloudsearch_tut.html#adding-documents-to-the-index
我的代码是:
import boto
conn = boto.connect_cloudsearch(aws_access_key_id='<>',aws_secret_access_key='<>')
domain = conn.lookup('testfoo')
doc_service = domain.get_document_service()
doc_service.add(doc_id, version, data)
首先我得到了相同的请求问题 Boto CloudSearch on GAE: TypeError: request() got an unexpected keyword argument 'config'
所以我删除了配置kwarg(也不确定后果) 然后我得到了
boto.cloudsearch.document.CommitMismatchError: Incorrect number of adds returned. Commit: 1 Response: 0
我的数据是这样的
[
{
"raw" : "whole bunch of raw text",
"title" : "My new title",
"blurb" : "A really exciting article",
"document_type" : "Tech Guide",
"url" : "http://www.foobar/7199/tech-advice"
}
]
任何帮助非常感谢
答案 0 :(得分:1)
事实证明问题是当我在数据中构建json时,它不是json而是字符串。因此,当这产生json被发送到cloudsearch域并且它结合了id和“Add”操作时,它包括“fields”:“[ { “原始”:“整串原始文本”, “标题”:“我的新头衔”, “blurb”:“一篇非常令人兴奋的文章”, “document_type”:“技术指南”, “url”:“http://www.foobar/7199/tech-advice” } ]“作为一个字符串
解决方案只是数据需要json编码
doc_service.add(doc_id,version, json.loads(data))
答案 1 :(得分:0)
这里只需从数据中删除[]。因为如果你有单个对象,那么你必须用dictionay传递它。 {}
<强> [ 强> { &#34;原料&#34; :&#34;整串原始文本&#34;, &#34;标题&#34; :&#34;我的新头衔&#34;, &#34;导语&#34; :&#34;一篇非常令人兴奋的文章&#34;, &#34; DOCUMENT_TYPE&#34; :&#34;技术指南&#34;, &#34; URL&#34; :&#34; http://www.foobar/7199/tech-advice&#34; } 的 强>