2017-04-24 5 views
0

Der Versuch, die Bulk-Perkolat-Funktionalität für Elasticsearch-py (d. H. Mpercolate) arbeiten zu lassen, konnte jedoch online kein Beispiel finden. Ich bin in der Lage, die Sickerwasser-Funktion zu verwenden, so kann ich diese Arbeit machen zu:Elasticsearch-py Bulk-Perkolat-Funktionalität

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) 

Die Dokumentation ich bisher gelesen habe scheint zu implizieren, dass, wenn ich einen Bulk-Vorlage tun will, muss ich senden Header und Body als Strings, getrennt durch einen Zeilenumbruch. So habe ich versucht:

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) 

, die mir eine generische "elasticsearch.exceptions.TransportError" gibt. Jeder hat ein Arbeitsbeispiel, das ich anpassen kann?

Antwort

0

Sie müssen die Daten nicht selbst serialisieren, geben Sie einfach die query_list als Körper und es sollte das richtige tun