Python and ElasticSearch
examples/python/elastic_write.py
from datetime import datetime import random from elasticsearch import Elasticsearch import time import random hosts = ['localhost'] es = Elasticsearch(hosts) while True: doc = { 'timestamp': datetime.utcnow(), # Watch out for timezones. I spent two hours looking for my data, but it was in the future.... 'load': random.random() * 8, 'rnd': random.randrange(100), 'name': random.choice(['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptunus']), 'yes': random.choice([True, False]), } index_name = 'experimental' print(index_name) print(doc) res = es.index(index = index_name, doc_type = 'samples', body = doc) print(res) time.sleep(random.random()) # curl -X PUT -H "Content-Type: application/json" -d '{ "index": { "number_of_replicas": 0 } }' http://localhost:9200/_settings
examples/python/elastic_search.py
from datetime import datetime from elasticsearch import Elasticsearch hosts = ['localhost'] es = Elasticsearch(hosts) index_name = 'experimental' #res = es.search(index = index_name , body={"query": {"match_all": {}}}) # fetch all the records #res = es.search(index = index_name , body={"query": {"match": {'name': 'Joe'} }}) # select by equality #res = es.search(index = index_name , body={"query": {"match": {'name': 'Joe'} }}, size = 3) # limit the number of results #res = es.search(index = index_name , body={"query": {"range": {"rnd": {'gte': 20} }}}) #res = es.search(index = index_name , body={"query": {"range": {"timestamp": {'gte': datetime.now()} }}}) # some way to pass a datetime object res = es.search(index = index_name , body={"query": {"range": {"timestamp": {'gte': '2019-03-13T12:02:49'} }}}) # or a string representing a date print("Got {} Hits:".format(res['hits']['total'])) for hit in res['hits']['hits']: print(hit)
Data Generator
The following script will create and index some random time series.
examples/python/elastic_search_data_generator.py
from elasticsearch import Elasticsearch from datetime import datetime import sys import random import time def connect(): es = Elasticsearch([{'host': 'localhost', 'port': 9200}]) return es def list_indices(es): for index in es.indices.get('*'): print(index) print(index.__class__.__name__) print('---') if __name__ == '__main__': es = connect() list_indices(es) for _ in range(100): es.index('experimental', doc_type = 'experimental', body = { 'timestamp': datetime.utcnow(), 'name': random.choice(['Doc', 'Grumpy', 'Happy', 'Sleepy', 'Bashful', 'Sneezy', 'Dopey', 'Snowwhite']), 'load': random.random(), }) time.sleep(1 + random.random())
Published on 2019-06-25
If you have any comments or questions, feel free to post them on the source of this page in GitHub. Source on GitHub.
Comment on this post