def insert_image(chunk_size, max_results=5000, from_file=None):
count = 0
success_count = 0
es = search.init()
search.Image.init()
mapping = search.Image._doc_type.mapping
mapping.save(settings.ELASTICSEARCH_INDEX)
for chunk in grouper_it(chunk_size, import_from_file(from_file)):
if not from_file and count >= max_results: # Load everything if loading from file
break
else:
images = []
for result in chunk:
images.append(result)
if len(images) > 0:
try:
# Bulk update the search engine too
search_objs = [search.db_image_to_index(img).to_dict(include_meta=True) for img in images]
models.Image.objects.bulk_create(images)
helpers.bulk(es, search_objs)
log.debug("*** Committed set of %d images", len(images))
success_count += len(images)
except IntegrityError as e:
log.warn("Got one or more integrity errors on batch: %s", e)
finally:
count += len(images)
return success_count
评论列表
文章目录