python Elasticsearch5.x使用
阿新 • • 發佈:2017-08-22
hcl param itl out key str ram 統計 bject
python Elasticsearch5.x使用
文檔:http://elasticsearch-py.readthedocs.io/en/master/
Elasticsearch官方API文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html
兩種方式現實Elasticsearch API操作
方式一:安裝elasticsearch模塊,通過它操作Elasticsearch,代碼示例如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
"""
pip install elasticsearch
"""
from elasticsearch import Elasticsearch
class ElasticSearchClass( object ):
def __init__( self , host, port, user, passwrod):
self .host = host
self .port = port
self .user = user
self .password = passwrod
self .connect() def connect( self ):
self .es = Elasticsearch(hosts = [{ ‘host‘ : self .host, ‘port‘ : self .port}],
http_auth = ( self .user, self .password ))
def count( self , indexname):
"""
:param indexname:
:return: 統計index總數
"""
return self .es.count(index = indexname)
def delete( self , indexname, doc_type, id ):
"""
:param indexname:
:param doc_type:
:param id:
:return: 刪除index中具體的一條
"""
self .es.delete(index = indexname, doc_type = doc_type, id = id )
def get( self , indexname, id ):
return self .es.get(index = indexname, id = id )
def search( self , indexname, size = 10 ):
try :
return self .es.search(index = indexname, size = size, sort = "@timestamp:desc" )
except Exception as err:
print (err)
|
方式二:安裝requests模塊,通過GET、POST方式操作Elasticsearch
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class RequestsElasticSearchClass( object ):
def __init__( self , host, port, user, passwrod):
self .url = ‘http://‘ + host + ‘:‘ + str (port)
basicpwd = base64.b64encode((user + ‘:‘ + passwrod).encode( ‘UTF-8‘ ))
self .headers = { "User-Agent" : "shhnwangjian" ,
"Content-Type" : "application/json" ,
"Authorization" : "Basic {}" . format (basicpwd.decode( ‘utf-8‘ ))}
def search( self , indexname, size = 10 ):
gettdata = { "sort" : "@timestamp:desc" ,
"size" : size}
url = self .url + ‘/‘ + indexname + ‘/_search‘
ret = requests.get(url, headers = self .headers, timeout = 10 , params = gettdata)
print (ret.text)
|
備註:python3.6.1版本
python Elasticsearch5.x使用