一、介绍

elasticsearch-py是一个官方提供的low-level的elasticsearch python客户端库。为什么说它是一个low-level的客户端库呢?因为它只是对elasticsearch的rest API接口做了一层简单的封装,因此提供了最大的灵活性,但是于此同时使用起来就不是太方便。相对于这个low-level的客户端库,官方还提供了一个high-level的python客户端库:elasticsearch-dsl,这个会在另一篇文章中介绍。

更多介绍参见官方文档:https://elasticsearch-py.readthedocs.io/en/master/

二、安装

不同的elasticsearch版本要求不同的客户端版本,所以安装的时候需要根据你的elasticsearch来决定,下面是一个简单的参考:

# Elasticsearch .x
elasticsearch>=6.0.,<7.0.
# Elasticsearch .x
elasticsearch>=5.0.,<6.0.
# Elasticsearch .x
elasticsearch>=2.0.,<3.0.

在兼容的大的版本号下尽量选择最新的版本。

pip install elasticsearch

三、API

3.1 API文档

所有API都尽可能紧密的映射原始的rest API。

3.1.1 全局选项

某些被客户端添加的参数可以使用在所有的API上。

1.ignore

被用户忽略某些http错误状态码。

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])

2.timeout

被用于设置超时时间。

# only wait for 1 second, regardless of the client's default
es.cluster.health(wait_for_status='yellow', request_timeout=1)

3.filter_path

被用于过滤返回值。

es.search(index='test-index', filter_path=['hits.hits._id', 'hits.hits._type'])

3.1.2 Elasticsearch

Elasticsearch是一个low-level客户端,提供了一个从python到es rest端点的直接映射。这个实例拥有属性cat、cluster、indices、ingest、nodes、snapshot和tasks,通过他们可以访问CatClient、ClusterClient、IndicesClient、IngestClient、NodesClient、SnapshotClient和TasksClient的实例。

elasticsearch类包含了操作elasticsearch许多常用方法,例如:get、mget、search、index、bulk、create、delete等,这些方法的具体用法,可以参考elasticsearch-py的官方文档。

在执行以上方法之前,首先需要获得一个elasticsearch的实例,而获取这个实例有两个方法,一个是给elasticsearch的初始化函数传递一个connection class实例,另一个是给elasticsearch的初始化函数传递要连接的node的host和port,其实最终这些host、port还是被传递给了connection class。

# create connection to localhost using the ThriftConnection
es = Elasticsearch(connection_class=ThriftConnection) # 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},
])

3.1.3 Indices

indices用于操作、查询关于索引的信息,或者可以说是操作、查询索引相关的元数据。

3.1.4 Ingest

ingest是一个插件,用于丰富插入数据的插入。

3.1.5 Cluster

cluster用于获取和集群相关的信息,例如:集群的健康状态、settings等。

3.1.6 Nodes

nodes用于获取和节点相关的信息。

3.1.7 Cat

cat可以用来获取别名、分片信息、文档数量等信息。

3.1.8 Snapshot

snapshot用于管理快照。

3.1.9 Tasks

tasks是用于任务管理的,官方文档上提示该task是新特性,未来可能会改变,所以要注意。

3.2 X-Pack APIs

X-Pack是Elastic Stack扩展,它将安全性,警报,监视,报告和图形功能捆绑到一个易于安装的程序包中。

3.2.1 Info

3.2.2 Graph Explore

3.3.3 Licensing API

3.3.4 Machine Learning

3.3.5 Security APIS

3.3.6 Watcher APIS

3.3.7 Migration APIS

3.3 异常

这一节展示了使用elasticsearch-py时可能抛出的异常。

3.4 连接层API

connection是负责与集群连接的类。

3.4.1 Transport

transport封装与逻辑相关的传输。处理各个连接的实例化,并创建一个连接池来保存它们。

3.4.2 Connection Pool

connection pool是一个连接池,用于管理连接。

3.4.3 Connection Selector

connection selector是一个连接选择器,它最好的一个例子是zone-aware选择,可以自动选择本地连接,只有当本地node都无法连接是才会去选择连接其他node。

3.4.4 Urllib3HttpConnection

默认connection class。

3.5 传输类

传输模块列出了可以被当做elasticsearch初始化参数connection_class的connection class。

3.5.1 Connection

connection负责管理与elasticsearch节点的连接。

3.5.2 Urllib3HttpConnection

基于urllib的connection class,是默认connection class。

3.5.3 RequestsHttpConnection

基于requests的connection class,除非要使用requests相关的高级特性,否则建议不要使用该类。

3.6 helpers

helpers是一个简单的辅助函数的集合,这些函数抽象了一些细节或原始API。

3.6.1 bulk helpers

bulk API的特定格式要求导致直接使用它们会非常复杂,因此这里提供了几个bulk API的helper函数,具体使用方法可以参考elasticsearch-py的官方文档。

3.6.2 scan

scan是对scroll API的简单抽象。

3.6.3 reindex

reindex用于将可能满足给定查询的一个索引中的所有文档重新索引到另一个索引

学习python库:elasticsearch-py的更多相关文章

  1. 小白学习Python之路---py文件转换成exe可执行文件

    一.背景 今天闲着无事,写了一个小小的Python脚本程序,然后给同学炫耀的时候,发现每次都得拉着其他人过来看着自己的电脑屏幕,感觉不是很爽,然后我想着网上肯定有关于Python脚本转换成可执行文件的 ...

  2. Python 库,资源

    库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...

  3. 这几天加班熬夜把所有Python库整理了一遍,非常全面!

    库名称简介 Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码.colorama 主要用来给文本添加各种颜色,并且非常简单易用.Prettytable 主要用于在终端或浏览器端构建格 ...

  4. 花了三个月终于把所有的 Python 库全部整理了!可以说很全面了

    库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...

  5. Python库整理

    库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...

  6. [转载]花了半个月,终于把Python库全部整理出来了,非常全面

    库名称简介 Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable 主要用于在终端或浏览器端构 ...

  7. Python 库整理【收藏】

    库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...

  8. 学习Python要知道哪些重要的库和工具

    本文转自:https://github.com/jobbole/awesome-python-cn 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具. ...

  9. 转载:【学习之家】Python中__init__.py文件的作用

    Python中__init__.py文件的作用详解 Python中__init__.py文件的作用详解 来源:学习之家 作者:xuexi110 人气:357 发布时间:2016-09-29 摘要:__ ...

随机推荐

  1. Win10家庭版如何启用本地组策略

    组策略对于优化和维护Windows系统来说十分重要.众所周知,Windows 10家庭版中并不包含组策略,对于使用家庭版Windows的朋友来说,十分不方便.小编将以Windows10家庭版为例,带大 ...

  2. 2019-8-31-dotnet-使用-MessagePack-序列化对象

    title author date CreateTime categories dotnet 使用 MessagePack 序列化对象 lindexi 2019-08-31 16:55:58 +080 ...

  3. CNN网络改善的方法——池化

    一个能降低卷积金字塔中特征图的空间维度,目前为止,我们通过调整步幅,将滤镜每次移动几个像素.图1 从而降低特征图的尺寸.这是降低图像采样率的一种非常有效的方法. 图1 它移除了很多信息,如果我们不采用 ...

  4. Libev源码分析04:Libev中的相对时间定时器

    Libev中的超时监视器ev_timer,就是简单的相对时间定时器,它会在给定的时间点触发超时事件,还可以在固定的时间间隔之后再次触发超时事件. 所谓的相对时间,指的是如果你注册了一个1小时的超时事件 ...

  5. poj 3169 Layout (差分约束)

    3169 -- Layout 继续差分约束. 这题要判起点终点是否连通,并且要判负环,所以要用到spfa. 对于ML的边,要求两者之间距离要小于给定值,于是构建(a)->(b)=c的边.同理,对 ...

  6. H3C 使用命令视图

  7. poj 3675 Telescope (圆与多边形面积交)

    3675 -- Telescope 再来一题.这题的代码还是继续完全不看模板重写的. 题意不解释了,反正就是一个单纯的圆与多边形的交面积. 这题的精度有点搞笑.我用比较高的精度来统计面积,居然wa了. ...

  8. phpStudy本地环境测试,打开网页很慢的解决办法!

    很多人应该都遇到了在使用phpStudy本地环境测试软件时候打开很慢的问题,甚至动辄达到了1000ms以上,开篇直接给出解决办法: 下面给大家介绍phpstudy访问速度慢的解决办法. 1.修改mys ...

  9. Python--day68--ORM内容回顾

    Django项目如何使用ORM连接MySQL: 多对多关系讲解:

  10. 最小生成树prim、

    过年那几天确实没好好学习.在老家闲着也是闲着.可是就是没看书. 回来这几天又一直在弄个人博客.买域名云服务器备案什么的- -. 麻烦死了呢. 在腾讯花1块钱备案了一个网站www.goodgoodstu ...