相关文档
python与ES的链接库为elasticsearch.
pip install elasticsearch
node: python中from_ -> ES 中 from
python中doc_type -> ES 中 type
为了保证库的灵活性,python中elasticsearch的接口尽量保证与ES相同。
全局选项
elasticsearch模块提供了一些用户可自行添加并应用于全局的选项
ignore
用户可通过设置ignore去忽略一些错误信息。用例如下
from elasticsearch import Elasticsearch
es = Elasticsearch()
# ignore 400 cause by IndexAlreadyExistsException when creating an index
es.indices.create(index='test-index', ignore=400)
# ignore 404 and 400
es.indices.delete(index='test-index', ignore=[400, 404])
代码 | 错误 |
---|---|
404 | class elasticsearch.NotFoundError(TransportError) |
409 | class elasticsearch.ConflictError(TransportError) |
400 | class elasticsearch.RequestError(TransportError) |
Timeout 和 request_timeout
不管用户默认怎样,只等待1秒钟。request_timeout的参数为float型,单位是秒。
es.cluster.health(wait_for_status='yellow', request_timeout=1)
timeout, 某些API的调用也接收timeout参数。但是,这个超时设定是内部的,并不能确定请求结束时间。
响应结果过滤
返回结果中的’hits.hits._id’和’hits.hits._type’部分
es.search(index='test-index', filter_path=['hits.hits._id', 'hits.hits._type'])
也可以使用‘*’去匹配名字
es.search(index='test-index', filter_path=['hits.hits._*'])
Elasticsearch
class elasticsearch.Elasticsearch(hosts=None, transport_class=<class ‘elasticsearch.transport.Transport’>, **kwargs)
为用户提供Python到ES的直接映射
attributes列表
实例属性 | 对应属性 |
---|---|
cat | CatClient |
cluster | ClusterClient |
indices | IndicesClient |
ingest | IngestClient |
nodes | NodesClient |
snapshot | SnapshotClient |
tasks | TasksClient |
parameters
connection_class,可设置自己的连接类。
es = Elasticsearch(connection_class=ThriftConnection)
hosts, lists of nodes.,以下方式均可
es = Elasticsearch(['xxx.xxx.x.xxx'], port=9200)#单个host
不同hosts需要通过字典设置不同的参数,方式如下。
# connect to localhost directly and another node using SSL on port 443
# and an url_prefix. Note that ``port`` needs to be an int.
es = Elasticsearch([
{'host': 'localhost'},
{'host': 'othernode', 'port': 443, 'url_prefix': 'es', 'use_ssl': True},
])