2013-03-05 1 views
1

Salut, je suis en train d'ajouter des documents à un domaine CloudSearch selonBoto 2.8.0 et cloudseach

http://docs.pythonboto.org/en/latest/cloudsearch_tut.html#adding-documents-to-the-index

mon code snppet est:

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) 

J'ai d'abord les mêmes problèmes de demandes Boto CloudSearch on GAE: TypeError: request() got an unexpected keyword argument 'config'

et ainsi j'ai enlevé le config kwarg (également pas sûr des conséquences) puis je reçois

boto.cloudsearch.document.CommitMismatchError: Incorrect number of adds returned. Commit: 1 Response: 0 

Mes données est comme ce

[ 
{ 
     "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" 
} 
] 

Toute aide grandement appréciée

+0

Je demande maintenant rétrogradé de 1.1.0 à 0.14.2 pour voir si cela fixerait quoi que ce soit, mais il ne pas d'aide – user2135633

Répondre

1

Il se trouve que le problème est quand je construit le JSON dans les données il n'est pas JSON mais une chaîne. Donc quand cela produit le json envoyé au domaine de cloudsearch et qu'il combine l'id et l'opération "Add", il inclut "fields": "[ { " raw ":" ensemble de texte brut ", " title ": "Mon nouveau titre", "texte de présentation": "un article très excitant", "document_type": "Guide Tech", "url": "http://www.foobar/7199/tech-advice" } ] » comme une chaîne

La solution est simplement besoin de données codage json

doc_service.add (doc_id, version, json.loads (données))

0

Ici, supprimez simplement [] des données. Parce que si vous avez un seul objet, vous devez le passer avec dictionay. {}

[ { "brut": "tas de texte brut", "title": "Mon nouveau titre", "blurb": "Un article très excitant", "document_type": "Guide Tech", "url": "http://www.foobar/7199/tech-advice" } ]