学习python库:elasticsearch-py
一、介绍
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的更多相关文章
- 小白学习Python之路---py文件转换成exe可执行文件
一.背景 今天闲着无事,写了一个小小的Python脚本程序,然后给同学炫耀的时候,发现每次都得拉着其他人过来看着自己的电脑屏幕,感觉不是很爽,然后我想着网上肯定有关于Python脚本转换成可执行文件的 ...
- Python 库,资源
库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...
- 这几天加班熬夜把所有Python库整理了一遍,非常全面!
库名称简介 Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码.colorama 主要用来给文本添加各种颜色,并且非常简单易用.Prettytable 主要用于在终端或浏览器端构建格 ...
- 花了三个月终于把所有的 Python 库全部整理了!可以说很全面了
库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...
- Python库整理
库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...
- [转载]花了半个月,终于把Python库全部整理出来了,非常全面
库名称简介 Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable 主要用于在终端或浏览器端构 ...
- Python 库整理【收藏】
库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...
- 学习Python要知道哪些重要的库和工具
本文转自:https://github.com/jobbole/awesome-python-cn 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具. ...
- 转载:【学习之家】Python中__init__.py文件的作用
Python中__init__.py文件的作用详解 Python中__init__.py文件的作用详解 来源:学习之家 作者:xuexi110 人气:357 发布时间:2016-09-29 摘要:__ ...
随机推荐
- 瑞星推国内唯一Linux系统杀毒软件 国产操作系统还需国产安全软件保护
近来在IT领域最爆炸的新闻莫过于5月20日中央国家机关政府採购中心下发通知.要求中央机关採购所有计算机类产品不同意安装Windows 8.而改用国产Linux操作系统. 此消息一出,立马引起各界关注. ...
- Codesign error: Certificate identity appearing twice
第一种解决方法: I think I figured out why the simple delete is not working. Because the dev certificate is ...
- 最长公共子序列(LCS)、最长递增子序列(LIS)、最长递增公共子序列(LICS)
最长公共子序列(LCS) [问题] 求两字符序列的最长公共字符子序列 问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字 ...
- oracle函数 end
[功能]当:<表达式>=<表达式条件值1……n> 时,返回对应 <满足条件时返回值1……n> 当<表达式条件值1……n>不为条件表达式时,与函数deco ...
- Android 使用SystemBarTint设置状态栏颜色
做项目时,发现APP的状态栏是系统默认的颜色,突然想到,为啥别的APP是自己设置的颜色(和APP本身很相搭),于是也想给自己的APP设置系统状态栏的颜色,更加美美哒... 搜了下,发现原来设置状态栏居 ...
- H3C Telnet配置例子
- Android Studio(六):Android Studio添加注释模板
Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...
- Ext--Layout(布局)
EXT中的布局,常用的有border.column.fit.form.tabel这几种. Fit布局,子元素将自动填满整个父容器(对元素设置宽度无效),如果容器组件中有多个子元素,则只会显示第一个子元 ...
- asp.net MVC 模板定制
模板存放位置:C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC ...
- multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
情景再现: 上传文件到.net(wcf)后台时,总是上传不成功,后台要求Content-Type是application/octet-stream,我使用multipart/form-data方式,c ...