def render(self, result):
output = engine.EQUELOutput(engine.EQUELOutput.TYPE_TEXT, ["search"])
self.columns = list()
# First step: determine all columns that should appear in result of search result CSV
if len(self.params['fields']) > 0: # if field whitelist is given, take this
self.columns = self.params['fields']
else:
for doc in result.result["hits"]["hits"]: # iterate over all documents from result and pull columns from there
doccolumns = self.columnNames(doc["_source"])
for column in doccolumns:
if column not in self.columns:
self.columns.append(column)
import csv
csvwriter = csv.DictWriter(output, self.columns, dialect=self.params['dialect'])
if self.params['header']:
csvwriter.writeheader()
# Next: Iterate over documents and fill CSV with data
for doc in result.result["hits"]["hits"]:
extracted = self.extractFieldsFromDoc(doc["_source"])
csvwriter.writerow(extracted)
return output
评论列表
文章目录