boto 2.8.0和cloudseach

时间:2013-03-05 12:05:10

标签: boto amazon-cloudsearch

您好我正在尝试按照

将文档添加到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"
}
]

任何帮助非常感谢

2 个答案:

答案 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; } 的