ElasticSearch: Alle Dokumente im Index mit Python iterieren (bis zu 10000 Dokumente)
English
Deutsch
Important Note: This simple approach only works for up to ~10000 documents. Prefer using our scroll-based solution: See ElasticSearch: How to iterate / scroll through all documents in index
Verwende diese Hilfsfunktion, um über alle Dokumente in einem Index zu iterieren
es_iterate_all_docs.py
def es_iterate_all_documents(es, index, pagesize=250, **kwargs):
"""
Hilfsfunktion, um ALLE Werte aus zu iterieren
Gibt alle Dokumente zurück.
"""
offset = 0
while True:
result = es.search(index=index, **kwargs, body={
"size": pagesize,
"from": offset
})
hits = result["hits"]["hits"]
# Stoppen, wenn keine Docs mehr da sind
if not hits:
break
# Jeden Eintrag zurückgeben
yield from (hit['_source'] for hit in hits)
# Von dort fortsetzen
offset += pagesizeVerwendungsbeispiel:
es_iterate_usage.py
for entry in es_iterate_all_documents(es, 'my_index'):
print(entry) # Gibt das Dokument aus, wie es in der DB gespeichert istWie es funktioniert
Du kannst über alle Dokumente in einem Index in ElasticSearch iterieren, indem du Abfragen wie diese verwendest:
es_query_pagination.json
{
"size": 250,
"from": 0
}und "from" nach jeder Iteration um "size" erhöhst.
Check out similar posts by category:
Databases, ElasticSearch, Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow