Elasticsearch Python Interface Indexing a Document (ie. Adding an sample)


Install the necessary Python Library via:

$ pip install elasticsearch

Connect to Elasticsearch, Create a Document (e.g. data entry) and "Index" the document using Elasticsearch.

from datetime import datetime
from elasticsearch import Elasticsearch

# Connect to Elasticsearch using default options (localhost:9200)
es = Elasticsearch()

# Define a simple Dictionary object that we'll index to make a document in ES
doc = {
    'author': 'kimchy',
    'text': 'Elasticsearch: cool. bonsai cool.',
    'timestamp': datetime.now(),

# Write a document
res = es.index(index="test-index", doc_type='tweet', id=1, body=doc)

# Fetch the document
res = es.get(index="test-index", doc_type='tweet', id=1)

# Refresh the specified index (or indices) to guarantee that the document
#  is searchable (avoid race conditions with near realtime search)

# Search for the document
res = es.search(index="test-index", body={"query": {"match_all": {}}})
print("Got %d Hits:" % res['hits']['total'])

# Show each "hit" or search response (max of 10 by default)
for hit in res['hits']['hits']:
    print("%(timestamp)s %(author)s: %(text)s" % hit["_source"])