5.7 Python API(for Elasticsearch)

5.7 Python API 原文链接  翻译:AbnerGong

概述(Overview)

正式的初级(low-level)客户端。它的目标是为了所有的Elasticsearch相关的Python代码提供基础;为此(because of this)它尝试成为舆论自由的(opinion-free)以及非常容易扩展。完整文档请见
http://elasticsearch-py.rtfd.org/
其中左侧提供搜索功能,左侧下面Read the Docs中提供PDF/HTML/Epub格式的完整文档下载

Elasticsearch DSL
对于更高级的客户端库有更局限的功能(limited scope),看看elasticsearch-dsl-一个更python化的库坐落在elasticsearch-py之上(on the top of) 。

它提供了更方便和惯用(idiomatic)的方式来写和操作查询。它保持接近Elasticsearch JSON DSL,复用它的术语和结构在搬出(expose)整个范围DSL的时候,或者使用已经定义的类或者是像queryset的表达式

它也提供了可选的persistence layer为了把文档当做Python对象来处理,以ORM一样的风格:定义映射,取回并保存文档,把文档数据包在用户定义的类里。

安装 Installation

pip install elasticsearch

版本 Versioning

有两个分支服务于开发——master1.x,Master分支是用于跟踪Elasticsearch2.0的所有改变并超越,而(whereas)1.x跟踪Elasticsearch1.*.

发行主要版本1(1.X.Y)用于Elasticsearch1.并且后来0.4发行版用于与Elasticsearch 0.90..配合(work with)

推荐在你的setup.pyrequirements.txt中用如下方法:

    # Elasticsearch 2.x
    elasticsearch>=2.0.0,<3.0.0

    # Elasticsearch 1.x
    elasticsearch>=1.0.0,<2.0.0

使用样例 Example use

>>> from datetime import datetime
>>> from elasticsearch import Elasticsearch

# by default we connect to localhost:9200
>>> es = Elasticsearch()

# datetimes will be serialized
>>> es.index(index="my-index", doc_type="test-type", id=42, body={"any": "data", "timestamp": datetime.now()})
{u'_id': u'42', u'_index': u'my-index', u'_type': u'test-type', u'_version': 1, u'ok': True}

# but not deserialized
>>> es.get(index="my-index", doc_type="test-type", id=42)['_source']
{u'any': u'data', u'timestamp': u'2013-05-12T19:45:31.804229'}

【注意】所有的API调用映射原始的REST api尽可能地接近,包括调用时必须的和可选参数之间的区别。这意味着代码造成了位置和关键字参数之间的区别;我们,然而,为了一致性和安全性,更推荐为所有的调用使用关键字参数。

特点 Features

客户端特点包括:
- 转换基本Python数据类型到或从json类型(datetimes不被解码因为performance的原因)
- 集群节点的可配置的自动发现
- 持久连接
- 在所有的可用节点之间负载均衡(以可插拔(pluggable)的选择策略)
- 失败连接处罚(penalization)(基于时间的 —— 失败的连接直到超时才会再次重试(retried))
- 线程安全
- 可插拔的架构(pluggable architecture)

许可 License

版权2013-2015 Elasticsearch
在Apache许可下被许可,版本2.0(许可); ……………………

你可能感兴趣的:(Elasticsearch)