ITPub博客

首页 > IT基础架构 > > Elasticsearch-py 2.3版本的API翻译文档

Elasticsearch-py 2.3版本的API翻译文档

作者:格伯纳 时间:2020-05-27 18:01:57 0 删除 编辑

参考资料

Elasticsearch

API Documentation

Global options

一、Ignore

如果elasticsearch返回2XX响应,则API调用被视为成功(并将返回响应)。否则,将引发TransportError(或更具体的子类)的实例。您可以在“Exception”中查看其他异常和错误状态。如果您不希望引发异常,则始终可以使用应忽略的单个状态代码或其列表传递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])

二、Timeout

在构造客户端时可以设置全局超时(请参阅Connection的超时参数),或者在每个请求的基础上使用request_timeout(浮点值,以秒为单位)作为任何API调用的一部分来设置全局超时,此值将传递给执行的perform_request方法。
# only wait for 1 second, regardless of the client's default
es.cluster.health(wait_for_status='yellow', request_timeout=1)

三、Response Filtering

filter_path参数用于减少elasticsearch返回的响应。例如,要仅返回_id和_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)
Elasticsearch低级客户端。提供从Python到ES REST端点的直接映射。该实例具有属性cat,cluster,indices,nodes和snapshot,分别提供对CatClient,ClusterClient,IndicesClient,NodesClient和SnapshotClient实例的访问。这是访问这些类及其方法的首选(也是唯一受支持的)方式。您可以通过提供connection_class参数来指定应该使用的自己的连接类:
# create connection to localhost using the ThriftConnection
es = Elasticsearch(connection_class=ThriftConnection)
如果你想打开嗅探,你有几个选项(在Transport中描述):
# create connection that will automatically inspect the cluster to get
# the list of active nodes. Start with nodes running on 'esnode1' and
# 'esnode2'
es = Elasticsearch(
    ['esnode1', 'esnode2'],
    # sniff before doing anything
    sniff_on_start=True,
    # refresh nodes after a node fails to respond
    sniff_on_connection_fail=True,
    # and also every 60 seconds
    sniffer_timeout=60
)
不同的主机可以有不同的参数,每个节点使用一个字典来指定:
# 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},
])
如果使用SSL,有几个参数可以控制我们处理证书的方式(有关选项的详细说明,请参阅Urllib3HttpConnection):
es = Elasticsearch(
    ['localhost:443', 'other_host:443'],
    # turn on SSL
    use_ssl=True,
    # make sure we verify SSL certificates (off by default)
    verify_certs=True,
    # provide a path to CA certs on disk
    ca_certs='/path/to/CA_certs',
    # PEM formatted SSL client certificate
    client_cert='/path/to/clientcert.pem',
    # PEM formatted SSL client key
    client_key='/path/to/clientkey.pem'
)
或者,您可以使用RFC-1738格式的URL,只要它们与其他选项不冲突:
es = Elasticsearch(
    [
        'http://user:secret@localhost:9200/',
        'https://user:secret@other_host:443/production'
    ],
    verify_certs=True
)
bulk(*args, **kwargs)
在单个API调用中执行许多索引/删除操作。
clear_scroll(*args, **keargs)
清除通过指定要搜索的滚动参数创建的滚动请求。
count(*args, **kwargs)
执行查询并获取该查询的匹配数。
count_percolate(*args, **kwargs)
过滤器允许针对索引注册查询,然后发送包含doc的percolate请求,并从注册查询集中获取与该doc匹配的查询。elastic.co/guide/en/ela
create(*args, **kwargs)
在特定索引中添加类型化的JSON文档,使其可搜索。在幕后这个方法调用index(...,op_type ='create')elastic.co/guide/en/ela
delete(*args, **kwargs)
根据ID,从特定索引中删除类型化的JSON文档。
delete_script(*args, **kwargs)
从elasticsearch中删除存储的脚本。
elastic.co/guide/en/ela
delete_template(*args, **kwargs)
删除搜索模板。
elastic.co/guide/en/ela
exists(*args, **kwargs)
返回一个布尔值,指示Elasticsearch中是否存在给定文档。
elastic.co/guide/en/ela
Note文档不存在时会提示 HEAD /internal_data/xxx/xxxxxxxxxx [status:404 request:0.004s]
explain(*args, **kwargs)
explain api计算查询和特定文档的分数说明。无论文档是否与特定查询匹配,这都可以提供有用的反馈。
elastic.co/guide/en/ela
field_stats(*args, **kwargs)
字段统计api允许人们在不执行搜索的情况下查找字段的统计属性,但查找Lucene索引中本机可用的度量。
get(*args, **kwargs)
根据ID从索引中获取类型化的JSON文档。
elastic.co/guide/en/ela
get_script(*args, **kwargs)
从API检索脚本。
elastic.co/guide/en/ela
get_source(*args, **kwargs)
通过它的索引,类型和ID获取文档的 _source 字段。
elastic.co/guide/en/ela
get_template(*args, **kwargs)
检索搜索模板。
elastic.co/guide/en/ela
index(*args, **kwargs)
在特定索引中添加或更新类型化的JSON文档,使其可搜索。
elastic.co/guide/en/ela
info(*args, **kwargs)
从当前群集中获取基本信息。
elastic.co/guide/
mget(*args, **kwargs)
根据索引,类型(可选)和ID获取多个文档。 elastic.co/guide/en/ela
mpercolate(*args, **kwargs)
过滤器允许针对索引注册查询,然后发送包含doc的percolate请求,并从注册查询集中获取与该doc匹配的查询。 elastic.co/guide/en/ela
msearch(*args, **kwargs)
在同一API中执行多个搜索请求。 elastic.co/guide/en/ela

补充: 有效类型为'query_then_fetch','query_and_fetch','dfs_query_then_fetch','dfs_query_and_fetch','count','scan'

mtermvectors(*args, **kwargs)
multi termvectors API允许基于索引,类型和id获得多个termvectors。elastic.co/guide/en/ela
percolate(*args, **kwargs)
过滤器允许针对索引注册查询,然后发送包含doc的percolate请求,并从注册查询集中获取与该doc匹配的查询。elastic.co/guide/en/ela
ping(*args, **kwargs)
如果群集已启动,则返回True,否则返回False。elastic.co/guide/
put_script(*args, **kwargs)
使用指定的ID创建给定语言的脚本。elastic.co/guide/en/ela
put_template(*args, **kwargs)
创建搜索模板。elastic.co/guide/en/ela
render_search_template(*args, **kwargs)
elasticsearch.org/guide
scroll(*args, **kwargs)
滚动通过指定scroll参数创建的搜索请求。elastic.co/guide/en/ela
search(*args, **kwargs)
执行搜索查询并获取与查询匹配的搜索匹配。elastic.co/guide/en/ela
search_exists(*args, **kwargs)
exists API允许轻松确定是否存在所提供查询的匹配文档。elastic.co/guide/en/ela
search_shards(*args, **kwargs)
搜索分片api返回将执行搜索请求的索引和分片。这可以为解决问题或使用路由和分片首选项规划优化提供有用的反馈。elastic.co/guide/en/ela
search_template(*args, **kwargs)
接受查询模板和键/值对映射的查询,以填充模板参数。elastic.co/guide/en/ela
suggest(*args, **kwargs)
建议功能通过使用建议器基于提供的文本建议类似的查找术语。elastic.co/guide/en/ela
termvectors(*args, **kwargs)
返回特定文档字段中术语的信息和统计信息。该文档可以存储在索引中或由用户人工提供(在1.4中添加)。请注意,对于存储在索引中的文档,这是一个接近实时的API,因为术语向量在下次刷新之前不可用。elastic.co/guide/en/ela
update(*args, **kwargs)
根据提供的脚本或部分数据更新文档。elastic.co/guide/en/ela

Exceptions

class elasticsearch.ImproperlyConfigured
传递给客户端的配置不一致或无效时引发的异常。
class elasticsearch.ElasticsearchException
此包的操作引发的所有异常的基类(不适用于ImproperlyConfigured)。
class elasticsearch.SerializationError(ElasticsearchException)
传入的数据无法在正在使用的Serializer中正确序列化。
class elasticsearch.TransportError(ElasticsearchException)
ES返回非OK(> = 400)HTTP状态代码时引发异常。或者发生实际连接错误时;在这种情况下,status_code将设置为“N / A”。

parametersexplainerror字符串错误消息。info来自ES的返回错误信息的字典,如果可用的话。status引发错误的响应的HTTP状态代码,如果不适用,则为“N / A”。

class elasticsearch.ConnectionError(TransportError)
与ES交谈时出现异常时出错。基础Connection实现的原始异常以.info的形式提供。
class elasticsearch.ConnectionTimeout(ConnectionError)
网络超时。默认情况下不会导致节点重试。
class elasticsearch.SSLError(ConnectionError)
遇到SSL错误时出错。
class elasticsearch.NotFoundError(TransportError)
表示404状态代码的异常。
class elasticsearch.ConflictError(TransportError)
表示409状态代码的异常。
class elasticsearch.RequestError(TransportError)
表示400状态代码的异常。
class elasticsearch.ConnectionError(TransportError)
与ES连接时出现异常时出错。基础Connection实现的原始异常以.info的形式提供。

Connection Layer API

Transport classes

可以使用的传输类列表,只需导入您的选择并将其作为connection_class传递给Elasticsearch的构造函数。请注意,RequestsHttpConnection需要安装 requests。 例如,要使用基于请求的连接,只需导入并使用它:
from elasticsearch import Elasticsearch, RequestsHttpConnection
es = Elasticsearch(connection_class=RequestsHttpConnection)

Connection

class elasticsearch.connection.Connection(host='localhost', port=9200, url_prefix='', timeout=10, **kwargs)
负责维护与Elasticsearch节点的连接的类。它拥有持久连接池,它的主界面(perform_request)是线程安全的。 还负责记录。

Urllib3HttpConnection

class elasticsearch.connection.Urllib3HttpConnection(host='localhost', port=9200, http_auth=None, use_ssl=False, verify_certs=False, ca_certs=None, client_cert=None, client_key=None, ssl_version=None, ssl_assert_hostname=None, ssl_assert_fingerprint=None, maxsize=10, **kwargs)
使用urllib3库和http协议的默认连接类。

RequestsHttpConnection

class elasticsearch.connection.RequestsHttpConnection(host='localhost', port=9200, http_auth=None, use_ssl=False, verify_certs=False, ca_certs=None, client_cert=None, client_key=None, **kwargs)
使用请求库进行连接。

Helpers

简单帮助函数的集合,用于抽象一些细节或原始API。

Bulk helpers

批量API有几个帮助程序,因为它需要特定的格式化,如果直接使用,其他注意事项会使它变得很麻烦。 所有批量助手都接受Elasticsearch类的实例和可迭代的 action(任何可迭代的,也可以是生成器,这在大多数情况下是理想的,因为它允许您索引大型数据集而无需将它们加载到内存中)。 action 可迭代中的项应该是我们希望以多种格式索引的文档。最常见的一个与search()返回的相同,例如:
{
  "_index": "index-name",
  "_type": "document",
  "_id": 42,
  "_parent": 5,
  "_ttl": "1d",
  "_source": {
    "title": "Hello World!",
    "body": "..."
  }
}
另外,如果_source不存在,它将弹出doc中的所有元数据字段,并将其余部分用作文档数据:
{
  "_id": 42,
  "_parent": 5,
  "title": "Hello World!",
  "body": "..."
}
bulk()api接受 index,create,delete 和 update 操作。使用op_type字段指定操作(op_type默认为 index ):
{
    "_op_type": "delete",
    "_index": "index-name",
    "_type": "document",
    "_id": 42
  }
{
    "_op_type": "update",
    "_index": "index-name",
    "_type": "document",
    "_id": 42,
    "doc": {
      "question": "The life, universe and everything."
    }
  }

Note: 从文件中读取原始json字符串时,您也可以直接传递它们(不先解码为dicts)。但是,在这种情况下,您无法在每个记录的基础上指定任何内容(索引,类型,甚至ID),所有文档都将被发送到elasticsearch以按原样索引。

elasticsearch.helpers.streaming_bulk(client, actions, chunk_size=500, max_chunk_bytes=104857600, raise_on_error=True, expand_action_callback=<function expand_action>, raise_on_exception=True, **kwargs)
Streaming bulk消耗传入的iterable中的操作,并产生每个操作的结果。对于非流式用例,使用bulk(),它是流式批量的包装器,一旦整个输入被消耗和发送,就会返回有关批量操作的摘要信息。
elasticsearch.helpers.parallel_bulk(client, actions, thread_count=4, chunk_size=500, max_chunk_bytes=104857600, expand_action_callback=<function expand_action>, **kwargs)
批量助手的并行版本一次在多个线程中运行。
elasticsearch.helpers.bulk(client, actions, stats_only=False, **kwargs)
bulk()api的助手,它提供了一个更友好的人机界面 - 它消耗了一个 action 迭代器,并将它们以块的形式发送给elasticsearch。它返回一个包含摘要信息的元组 - 成功执行的操作数,如果stats_only设置为True,则显示错误列表或错误数。 有关更多可接受的参数,请参阅streaming_bulk()
任何其他关键字参数将传递给用于执行操作的streaming_bulk()。

Scan

elasticsearch.helpers.scan(client, query=None, scroll=u'5m', raise_on_error=True, preserve_order=False, **kwargs)
在scroll()api之上的简单抽象 - 一个简单的迭代器,它产生由下划线滚动请求返回的所有命中。 默认情况下,扫描不会以任何预定顺序返回结果。要在滚动时在返回的文档中使用标准顺序(通过分数或显式排序定义),请使用preserve_order = True。这可能是一项昂贵的操作,并且会抵消使用扫描的性能优势。
任何其他关键字参数将传递给初始search()调用:
scan(es,
    query={"query": {"match": {"title": "python"}}},
    index="orders-*",
    doc_type="books"
)

Reindex

elasticsearch.helpers.reindex(client, source_index, target_index, query=None, target_client=None, chunk_size=500, scroll=u'5m', scan_kwargs={}, bulk_kwargs={})
将一个满足给定查询的索引中的所有文档重新索引到另一个索引,可能(如果指定了target_client)在另一个集群上。如果未指定查询,则将重新索引所有文档。

Note: 这个帮助器不会传输mappings,只传输数据。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3137550/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    984324