An Alternative ElasticSearch Python Library
Project description
ElasticSearchPy
About
ElasticSeachPy is a python library used to connect to and interact with elasticsearch
This library is a python implementation of the Elasticsearch HTTP API and an alternative to ElasticSearch's Python Library
Installation
ElasticSearchPy can be install with the pip distribution system for Python by issuing:
$ pip3 install elasticsearch-python-client
Alternatively, you can run use setup.py to install by cloning this repository and issuing:
$ python3 setup.py install
Limitations
This library is currently under development and is not as feature rich as it will be. This being said, it currently has several limitations
- Python3+ Only - My primary development environment is python3, I currently do not have the time to test and vet interoperability between python2 and python3
- ElasticSearch Authentication - Currently, this library only supports "No Authentication" and "SSL w/ Certificate Authentication". This limitation is simply due to my testing environments
- Limited Functionality - If functionality isn't listed here, it is either not implemented or is not tested. As time moves forward, I will continue to add fuctionality
Contributors
If you are interested in contributing to this project, feel free to contact me at jeff@koebane.net
Examples
Connecting to ElasticSearch
from elasticsearchpy import ElasticSearchConnection
es_ip = "192.168.1.1"
# Connect to the cluster
es_conn = ElasticSearchConnection(es_ip)
# Connect to the cluster with a non 9200 port
# es_conn = ElasticSearchConnection(es_ip, port=80)
# Alternatively Connect to the cluster using SSL certificates
# es_conn = ElasticSearchConnection(es_ip, port=443,
# use_ssl=True,
# cert="/path/to/cert.crt",
# key="/path/to/key.key"
#)
Interact with the Cluster
from elasticsearchpy import ElasticSearchConnection
es_ip = "192.168.1.1"
# Connect to the cluster
es_conn = ElasticSearchConnection(es_ip)
#Get Cluster Object
es_cluster = es_conn.get_cluster()
# get number of active shards
print("There are {} active shards".format(es_cluster.active_shards))
# Get the number of hosts
total_nodes = es_cluster.nodes
data_nodes = es_cluster.data_nodes
print("This cluster has {} nodes ( {} data nodes )".format(total_nodes,data_nodes))
# Get Node Names
nodes = es_cluster.node_names
print("This cluster has the following nodes:")
for node_name in nodes:
print("- {}".format(node_name))
Interact with a cluster node
from elasticsearchpy import ElasticSearchConnection
es_ip = "192.168.1.1"
# Connect to the cluster
es_conn = ElasticSearchConnection(es_ip)
#Get Cluster Object
es_cluster = es_conn.get_cluster()
# Get Node Names
nodes = es_cluster.node_names
# Get Node Object
node = es_cluster.get_node(nodes[0)
print("Node {}".format(node.name)
if node.master:
print("* Is the master Node")
if node.ingest_node:
print("* Is an ingest Node")
if node.data_node:
print("* Is a data node")
print("Elasticsearch Version: {}".format(node.version))
print("OS: {}".format(node.os))
print("Has the following roles")
print("------------------------")
for role in node.roles:
print(" - {}".format(role))
Interact with indices
from elasticsearchpy import ElasticSearchConnection
es_ip = "192.168.1.1"
# Connect to the cluster
es_conn = ElasticSearchConnection(es_ip)
# Get Indices Object
non_sys_indices = es_conn.get_indices() # this gets all non-system indices
all_indices = es_conn.get_indices(system_indices=True) # this gets all indices including system indices
bob_indices = es_conn.get_indices(indice_prefix="bob") # this gets all indices that start with bob
# List indices
print("Here are the non-system indices")
for indice in non_sys_indices.indices:
print("- {}".format(indice)
print("Total: {}".format(non_sys_indices.count)
# Create an indice
my_indice = indices.create_indice("bob-1") # Creates bob-1 with default shard replica values
my_indice2 = indices.create_indice("bob-2", shards=2, replicas=0) # Creates bob-2 with 2 shards and 0 replicas
# Delete an indice
indices.delete_indice("bob-2") # Deletes the Indice named bob-2
Interact with a single indice
from elasticsearchpy import ElasticSearchConnection
from elasticsearchpy import ElasticSearchIndice
es_ip = "192.168.1.1"
# Connect to the cluster
es_conn = ElasticSearchConnection(es_ip)
# Get Indices Object
non_sys_indices = es_conn.get_indices() # this gets all non-system indices
# Get the Indice Object
my_indice = non_sys_indice.get_indice("bob-1") # Retrieves an indice object from the indice bob-1
# Alternative way of getting the Indice Object
my_indice_2 = ElasticSearchIndice("bob-2",es_conn)
print("Indice {} has the following properties".format(my_indice.name))
print("- Status: {}".format(my_indice.status))
print("- Health: {}".format(my_indice.health))
print("- Number of documents: {}".format(my_indice.docs))
print("- Size: {}".format(my_indice.size))
doc_data = {
"message":"I am a test message",
"user":"test user",
"purpose":"TESTING...DUUU"
}
# Creating Documents
doc = my_indice.create_doc(doc_data) # this creates a do and lets elasticsearch generate the id
doc = my_indice.create_doc(doc_data,name="document-1234") # this creates a document that you generate the id for
# Deleting Documents
my_indice.delete_doc("document-1234")
Immediate future TODO List
- Add document search to indice object
- Add templates
- Document documents object
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file elasticsearch-python-client-0.0.1.tar.gz.
File metadata
- Download URL: elasticsearch-python-client-0.0.1.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8ee3bed7e305f5f4bde8dc5d306f8b10a3e8a7762ff70d4f660e8da524c98f0
|
|
| MD5 |
739b591b0aa59bf1641126a2ad2f9128
|
|
| BLAKE2b-256 |
3ab9046ba7578b2a5600d417b024d1b5405fe28ab1309ca5efa17d099e6496dd
|
File details
Details for the file elasticsearch_python_client-0.0.1-py2.py3-none-any.whl.
File metadata
- Download URL: elasticsearch_python_client-0.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 30.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e11e265fa45c652c97645c715ccae3d87f1520f1869cb34817144df214adbd38
|
|
| MD5 |
2a64d3e21fe2bde085aed70abbf3a756
|
|
| BLAKE2b-256 |
084a12eecf27c5cd51dfcc4b5de19310219d504bc7d38e1e5b499c5401892753
|