2017-04-24 6 views
0

Vous avez essayé de faire en sorte que la fonctionnalité de percolation en masse fonctionne pour Elasticsearch-py (c'est-à-dire mpercolate), mais vous n'avez pas réussi à trouver un exemple en ligne. Je suis en mesure d'utiliser la fonction de lixiviat, donc je peux obtenir ce travail:Elasticsearch-py Fonctionnalité de percolation en masse

doc = {'doc' : {'field1' : 'this is a value', 'field2' : 'this is another value'}} 
res = es.percolate(index = 'my_index', doc_type = 'my_doc_type', body = doc) 

La documentation que j'ai lu jusqu'à présent semble impliquer que si je veux faire une soumission en vrac, je dois envoyer l'en-tête et le corps en tant que chaînes, séparés par une nouvelle ligne. Ainsi, je l'ai essayé:

head = {'percolate' : {'index' : 'my_index', 'type' : 'my_doc_type'}}  
doc = {'doc' : {'field1' : 'this is a value', 'field2' : 'this is another value'}} 
doc2 = {'doc' : {'field1' : 'values and values', 'field2' : 'billions of values'}} 

query_list = [head, doc, head, doc2] 
my_body = '\n'.join([str(qry) for qry in query_list]) 

res = es.mpercolate(body = my_body) 

qui me donne un générique "elasticsearch.exceptions.TransportError". Quelqu'un at-il un exemple de travail que je peux adapter?

Répondre

0

Vous ne devez pas sérialiser les données vous-même, il suffit de passer dans le query_list en tant que corps et il devrait faire la bonne chose