参考资料
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=, **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
)
parameters | explain |
---|---|
hosts | 我们应该连接的节点列表。节点应该是一个字典({“host”:“localhost”,“port”:9200}),整个字典将作为kwargs传递给Connection类,或者是一个主机[:port]格式的字符串, 被自动翻译成字典。如果没有给出值,将使用Urllib3HttpConnection类的默认值。 |
transport_class | Transport 的子类被使用。 |
kwargs | 任何其他参数将传递给Transport类,并随后传递给Connection实例。 |
bulk(*args, **kwargs)
在单个API调用中执行许多索引/删除操作。
parameters | explain |
---|---|
body | 操作定义和数据(动作 - 数据对),由换行符分隔 |
index | 不提供一个项目的默认索引 |
doc_type | 未提供一个项目的默认文档类型 |
consistency | 操作的显式写一致性设置,有效选择是:'one','quorum','all' |
fields | 要在更新响应中返回的默认逗号分隔的字段列表 |
refresh | Refresh the index after performing the operation |
routing | 具体路由值 |
timeout | 显式操作超时 |
clear_scroll(*args, **keargs)
清除通过指定要搜索的滚动参数创建的滚动请求。
parameters | explain |
---|---|
scroll_id | 要清除的以逗号分隔的滚动ID列表 |
body | 以逗号分隔的滚动ID列表,如果没有通过scroll_id参数指定,则清除它们 |
count(*args, **kwargs)
执行查询并获取该查询的匹配数。
parameters | explain |
---|---|
index | 以逗号分隔的索引列表,用于限制结果 |
doc_type | 以逗号分隔的类型列表,用于限制结果 |
body | 用于限制使用Query DSL指定的结果的查询(可选) |
allow_no_indices | 是否忽略通配符索引表达式是否解析为具体索引。(这包括_all字符串或未指定索引时) |
analyze_wildcard | 指定是否应分析通配符和前缀查询(默认值:false) |
analyzer | 用于查询字符串的分析器 |
default_operator | 查询字符串查询(AND或OR)的默认运算符,默认为“OR”,有效选项为:'AND','OR' |
df | 要用作默认值的字段,其中查询字符串中未给出字段前缀 |
expand_wildcards | 是否将通配符表达式扩展为打开,关闭或两者的具体索引。默认为“open”,有效选择为:'open','closed','none','all' |
ignore_unavailable | 是否应该忽略指定的具体索引(丢失或关闭) |
lenient | 指定是否应忽略基于格式的查询失败(例如向数字字段提供文本) |
lowercase_expanded_terms | 指定查询字词是否应该是小写的 |
min_score | 仅包括结果中具有特定_score值的文档 |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
q | 查询Lucene查询字符串语法 |
routing | 具体路由值 |
count_percolate(*args, **kwargs)
过滤器允许针对索引注册查询,然后发送包含doc的percolate请求,并从注册查询集中获取与该doc匹配的查询。http://www.elastic.co/guide/en/elasticsearch/reference/current/search-percolate.html
parameters | explain |
---|---|
index | 被计数的文件索引被渗透。 |
doc_type | 被计数过滤的文档类型。 |
id | 使用指定id已知的文档替换请求正文中的文档。在id的顶部,index和type参数将用于从集群中检索文档。 |
body | 使用渗透DSL的计数过滤器请求定义 |
allow_no_indices | 是否忽略通配符索引表达式是否解析为具体索引。(这包括_all字符串或未指定索引时) |
expand_wildcards | 是否将通配符表达式扩展为打开,关闭或两者的具体索引。默认为“open”,有效选项为:'open','closed','none','all' |
ignore_unavailable | 当不可用(丢失或关闭)时是否应忽略指定的具体索引 |
percolate_index | 计算文档渗透的计数索引。默认为index。 |
percolate_type | 将percolate文档计入的类型。默认为type。 |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
routing | 以逗号分隔的特定路由值列表 |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
create(*args, **kwargs)
在特定索引中添加类型化的JSON文档,使其可搜索。在幕后这个方法调用index(...,op_type ='create')
http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html
parameters | explain |
---|---|
index | 索引的名称 |
doc_type | 文档的类型 |
body | 文件 |
id | 文档ID |
consistency | 操作的显式写一致性设置,有效选择是:'one','quorum','all' |
op_type | 显式操作类型,默认'index',有效选择是:'index','create' |
parent | 父文档的ID |
refresh | 执行操作后刷新索引 |
routing | 特定的路由值 |
timeout | 显式操作超时 |
timestamp | 文档的显式时间戳 |
ttl | 文档的到期时间 |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external', 'external_gte’, 'force’ |
delete(*args, **kwargs)
根据ID,从特定索引中删除类型化的JSON文档。
parmeters | explain |
---|---|
index | 索引的名称 |
doc_type | 文档的类型 |
id | 文档ID |
consistency | 操作的特定写一致性设置,有效选择是:'one','quorum','all' |
parent | 父文档的ID |
refresh | 执行操作后刷新索引 |
routing | 特定的路由值 |
timeout | 显式操作超时 |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
delete_script(*args, **kwargs)
从elasticsearch中删除存储的脚本。
http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html
parmeters | explain |
---|---|
lang | 脚本语言 |
id | 脚本ID |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
delete_template(*args, **kwargs)
删除搜索模板。
http://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html
parmeters | explain |
---|---|
id | 模板ID |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
exists(*args, **kwargs)
返回一个布尔值,指示Elasticsearch中是否存在给定文档。
http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-get.html
parmeters | explain |
---|---|
index | 索引的名称 |
doc_type | 文档的类型(使用_all获取与所有类型的ID匹配的第一个文档) |
id | 文档ID |
parent | 父文档的ID |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
realtime | 指定是以实时还是搜索模式执行操作 |
refresh | 在执行操作之前刷新包含文档的分片 |
routing | 特定的路由值 |
Note |
---|
文档不存在时会提示 HEAD /internal_data/xxx/xxxxxxxxxx [status:404 request:0.004s] |
explain(*args, **kwargs)
explain api计算查询和特定文档的分数说明。无论文档是否与特定查询匹配,这都可以提供有用的反馈。
http://www.elastic.co/guide/en/elasticsearch/reference/current/search-explain.html
parameters | explain |
---|---|
index | 索引的名称 |
doc_type | 文档的类型 |
id | 文档ID |
body | 使用Query DSL的查询定义 |
_source | 返回_source字段的true或false,或返回的字段列表 |
_source_exclude | 要从返回的_source字段中排除的字段列表 |
_source_include | 从_source字段中提取和返回的字段列表 |
analyze_wildcard | 指定是否应分析查询字符串查询中的通配符和前缀查询(默认值:false) |
analyzer | 查询字符串查询的分析器 |
default_operator | 查询字符串查询的默认运算符(AND或OR),默认为'OR',有效选项为:'AND','OR' |
df | 查询字符串查询的默认字段(默认值:_all) |
fields | 要在响应中返回的以逗号分隔的字段列表 |
lenient | 指定是否应忽略基于格式的查询失败(例如向数字字段提供文本) |
lowercase_expanded_terms | 指定查询字词是否应该是小写的 |
parent | 父文档的ID |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
q | 查询Lucene查询字符串语法 |
routing | 特定的路由值 |
field_stats(*args, **kwargs)
字段统计api允许人们在不执行搜索的情况下查找字段的统计属性,但查找Lucene索引中本机可用的度量。
parameters | explain |
---|---|
index | 以逗号分隔的索引名称列表;使用_all或空字符串对所有索引执行操作 |
body | 包含名称的字段json对象和可选的过滤索引结果的范围,其结果超出定义的边界 |
allow_no_indices | 是否忽略通配符索引表达式是否解析为具体索引。(这包括_all字符串或未指定索引时) |
expand_wildcards | 是否将通配符表达式扩展为打开,关闭或两者的具体索引。默认为“open”,有效选项为:'open','closed','none','all' |
fields | 以逗号分隔的字段列表,用于获取(最小值,最大值等)的字段统计信息 |
ignore_unavailable | 当不可用(丢失或关闭)时是否应忽略指定的具体索引 |
level | 定义是否应在每个索引级别或群集范围级别上返回字段统计信息,默认为“cluster”,有效选项为:'indices','cluster' |
get(*args, **kwargs)
根据ID从索引中获取类型化的JSON文档。
http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-get.html
parameters | explain |
---|---|
index | 索引的名称 |
doc_type | 文档的类型(使用_all获取与所有类型的ID匹配的第一个文档) |
id | 文档ID |
_source | 返回_source字段的true或false,或返回的字段列表 |
_source_exclude | 要从返回的_source字段中排除的字段列表 |
_source_include | 从_source字段中提取和返回的字段列表 |
fields | 要在响应中返回的以逗号分隔的字段列表 |
parent | 父文档的ID |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
realtime | 指定是以实时还是搜索模式执行操作 |
refresh | 在执行操作之前刷新包含文档的分片 |
routing | 特定的路由值 |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
get_script(*args, **kwargs)
从API检索脚本。
http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html
parameters | explain |
---|---|
lang | 脚本语言 |
id | 脚本ID |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
get_source(*args, **kwargs)
通过它的索引,类型和ID获取文档的 _source 字段。
http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-get.html
parameters | explain |
---|---|
index | 索引的名称 |
doc_type | 文档的类型;使用_all获取与所有类型的ID匹配的第一个文档 |
id | 文档ID |
_source | 返回_source字段的true或false,或返回的字段列表 |
_source_exclude | 要从返回的_source字段中排除的字段列表 |
_source_include | 从_source字段中提取和返回的字段列表 |
parent | 父文档的ID |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
realtime | 指定是以实时还是搜索模式执行操作 |
refresh | 在执行操作之前刷新包含文档的分片 |
routing | 特定的路由值 |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
get_template(*args, **kwargs)
检索搜索模板。
http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html
parameters | explain |
---|---|
id | 模板ID |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
index(*args, **kwargs)
在特定索引中添加或更新类型化的JSON文档,使其可搜索。
http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html
parameters | explain |
---|---|
index | 索引的名称 |
doc_type | 文档的类型 |
body | 文件 |
id | 文档ID |
consistency | 操作的显式写一致性设置,有效选择是:'one','quorum','all' |
op_type | 显式操作类型,默认'索引',有效选择是:'index','create' |
parent | 父文档的ID |
refresh | 执行操作后刷新索引 |
routing | 特定的路由值 |
timeout | 显式操作超时 |
timestamp | 文档的显式时间戳 |
ttl | 文档的到期时间 |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
info(*args, **kwargs)
从当前群集中获取基本信息。
http://www.elastic.co/guide/
mget(*args, **kwargs)
根据索引,类型(可选)和ID获取多个文档。
http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-multi-get.html
parameters | explain |
---|---|
body | 文件标识符;可以是docs(包含完整文档信息)或id(当URL中提供索引和类型时)。 |
index | 索引的名称 |
doc_type | 文档的类型 |
_source | 返回_source字段的true或false,或返回的字段列表 |
_source_exclude | 要从返回的_source字段中排除的字段列表 |
_source_include | 从_source字段中提取和返回的字段列表 |
fields | 要在响应中返回的以逗号分隔的字段列表 |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
realtime | 指定是以实时还是搜索模式执行操作 |
refresh | 在执行操作之前刷新包含文档的分片 |
mpercolate(*args, **kwargs)
过滤器允许针对索引注册查询,然后发送包含doc的percolate请求,并从注册查询集中获取与该doc匹配的查询。
http://www.elastic.co/guide/en/elasticsearch/reference/current/search-percolate.html
parameters | explain |
---|---|
body | percolate请求定义(标题和正文对),由换行符分隔 |
index | 要计数的文档索引作为默认值使用 |
doc_type | 被渗透以用作默认值的文档类型。 |
allow_no_indices | 是否忽略通配符索引表达式是否解析为具体索引。(这包括_all字符串或未指定索引时) |
expand_wildcards | 是否将通配符表达式扩展为打开,关闭或两者的具体索引。默认为“open”,有效选项为:'open','closed','none','all' |
ignore_unavailable | 当不可用(丢失或关闭)时是否应忽略指定的具体索引 |
msearch(*args, **kwargs)
在同一API中执行多个搜索请求。
http://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html
parameters | explain |
---|---|
body | 请求定义(元数据搜索请求定义对),由换行符分隔 |
index | 要用作默认值的逗号分隔的索引名称列表 |
doc_type | 以逗号分隔的文档类型列表,用作默认值 |
search_type | 搜索操作类型,有效选项为:'query_then_fetch','query_and_fetch','dfs_query_then_fetch','dfs_query_and_fetch','count','scan' |
mtermvectors(*args, **kwargs)
multi termvectors API允许基于索引,类型和id获得多个termvectors。http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-multi-termvectors.html
parameters | explain |
---|---|
index | 文档所在的索引。 |
doc_type | 文档的类型。 |
body | 在此处定义每个文档的ID,文档,参数或参数列表。您必须至少提供文档ID列表。见文档。 |
field_statistics | 指定是否应返回文档计数,文档频率总和以及总术语频率之和。 |
fields | 要返回的以逗号分隔的字段列表。 |
ids | 以逗号分隔的文档ID列表。您必须将id定义为参数或在请求正文中设置“ids”或“docs” |
offsets | 指定是否应返回术语偏移量。 |
parent | 文档的父ID。 |
payloads | 指定是否应返回术语有效负载。 |
positions | 指定是否应返回期限头寸。除非在正文“params”或“docs”中另有说明,否则适用于所有返回的文档。默认为True |
preference | 指定应对其执行操作的节点或分片(默认值:random)。适用于所有返回的文档,除非在body“params”或“docs”中另有指定。 |
realtime | 指定请求是实时的而不是近实时的(默认值:true)。 |
routing | 特定的路由值。除非在正文“params”或“docs”中另有说明,否则适用于所有返回的文档。 |
term_statistics | 指定是否应返回总术语频率和文档频率。适用于所有返回的文档,除非在body“params”或“docs”中另有说明。默认为False |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
percolate(*args, **kwargs)
过滤器允许针对索引注册查询,然后发送包含doc的percolate请求,并从注册查询集中获取与该doc匹配的查询。http://www.elastic.co/guide/en/elasticsearch/reference/current/search-percolate.html
parameters | explain |
---|---|
index | 要渗透的文档的索引。 |
doc_type | 要渗透的文档的类型。 |
id | 使用指定id已知的文档替换请求正文中的文档。在id的顶部,index和type参数将用于从集群中检索文档。 |
body | 使用percolate DSL的过滤器请求定义 |
allow_no_indices | 是否忽略通配符索引表达式是否解析为具体索引。(这包括_all字符串或未指定索引时) |
expand_wildcards | 是否将通配符表达式扩展为打开,关闭或两者的具体索引。默认为“open”,有效选项为:'open','closed','none','all' |
ignore_unavailable | 当不可用(丢失或关闭)时是否应忽略指定的具体索引 |
percolate_format | 返回匹配查询ID而不是对象的数组,有效选项为:'ids' |
percolate_index | 将文档渗透到的索引。默认为索引。 |
percolate_preference | 执行percolate请求时首选的分片。 |
percolate_routing | 渗透现有文档时使用的路由值。 |
percolate_type | 将文档渗透到的类型。默认为键入。 |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
routing | 以逗号分隔的特定路由值列表 |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
ping(*args, **kwargs)
如果群集已启动,则返回True,否则返回False。http://www.elastic.co/guide/
put_script(*args, **kwargs)
使用指定的ID创建给定语言的脚本。http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html
parameters | explain |
---|---|
lang | 脚本语言 |
id | 脚本ID |
body | 文档 |
op_type | 显式操作类型,默认'索引',有效选择是:'index','create' |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
put_template(*args, **kwargs)
创建搜索模板。http://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html
parameters | explain |
---|---|
id | 模板ID |
body | 文档 |
op_type | 显式操作类型,默认'索引',有效选择是:'index','create' |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
render_search_template(*args, **kwargs)
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-template.html
parameters | explain |
---|---|
id | 存储的搜索模板的ID |
body | 搜索定义模板及其参数 |
scroll(*args, **kwargs)
滚动通过指定scroll参数创建的搜索请求。http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html
parameters | explain |
---|---|
scroll_id | 滚动ID |
body | 如果未通过URL或查询参数传递,则为滚动ID。 |
scroll | 指定滚动搜索应保持索引的一致视图的时间长度 |
search(*args, **kwargs)
执行搜索查询并获取与查询匹配的搜索匹配。http://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html
parameters | explain |
---|---|
index | 要搜索的以逗号分隔的索引名称列表;使用_all或空字符串对所有索引执行操作 |
doc_type | 要搜索的以逗号分隔的文档类型列表;留空以对所有类型执行操作 |
body | 使用Query DSL的搜索定义 |
_source | 返回_source字段的true或false,或返回的字段列表 |
_source_exclude | 要从返回的_source字段中排除的字段列表 |
_source_include | 从_source字段中提取和返回的字段列表 |
allow_no_indices | 是否忽略通配符索引表达式是否解析为具体索引。(这包括_all字符串或未指定索引时) |
analyze_wildcard | 指定是否应分析通配符和前缀查询(默认值:false) |
analyzer | 用于查询字符串的分析器 |
default_operator | 查询字符串查询的默认运算符(AND或OR),默认为'OR',有效选项为:'AND','OR' |
df | 要用作默认值的字段,其中查询字符串中未给出字段前缀 |
expand_wildcards | 是否将通配符表达式扩展为打开,关闭或两者的具体索引。默认为“open”,有效选项为:'open','closed','none','all' |
explain | 指定是否返回有关分数计算的详细信息作为命中的一部分 |
fielddata_fields | 以逗号分隔的字段列表,作为每个匹配的字段的字段数据表示形式返回 |
fields | 以逗号分隔的字段列表,作为匹配的一部分返回 |
from_ | 起始偏移量(默认值:0) |
ignore_unavailable | 当不可用(丢失或关闭)时是否应忽略指定的具体索引 |
lenient | 指定是否应忽略基于格式的查询失败(例如向数字字段提供文本) |
lowercase_expanded_terms | 指定查询字词是否应该是小写的 |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
q | 查询Lucene查询字符串语法 |
request_cache | 指定是否应将请求缓存用于此请求,默认为索引级别设置 |
routing | 以逗号分隔的特定路由值列表 |
scroll | 指定滚动搜索应保持索引的一致视图的时间长度 |
search_type | 搜索操作类型,有效选项为:'query_then_fetch','dfs_query_then_fetch','count','scan' |
size | 要返回的命中数(默认值:10) |
sort | 以逗号分隔的 |
stats | 记录和统计目的请求的特定“标记” |
suggest_field | 指定用于建议的字段 |
suggest_mode | 指定建议模式,默认'缺失',有效选择是:'缺失','流行','总是' |
suggest_size | 响应中返回多少建议 |
suggest_text | 应返回建议的源文本 |
terminate_after | 每个分片收集的最大文档数,在达到查询执行将提前终止时。 |
timeout | 显式操作超时 |
track_scores | 即使它们不用于排序,是否计算和返回分数 |
version | 指定是否将文档版本作为匹配的一部分返回 |
search_exists(*args, **kwargs)
exists API允许轻松确定是否存在所提供查询的匹配文档。http://www.elastic.co/guide/en/elasticsearch/reference/current/search-exists.html
parameters | explain |
---|---|
index | 用于限制结果的以逗号分隔的索引列表 |
doc_type | 以逗号分隔的类型列表,用于限制结果 |
body | 限制使用Query DSL指定的结果的查询(可选) |
allow_no_indices | 是否忽略通配符索引表达式是否解析为具体索引。(这包括_all字符串或未指定索引时) |
analyze_wildcard | 指定是否应分析通配符和前缀查询(默认值:false) |
analyzer | 用于查询字符串的分析器 |
default_operator | 查询字符串查询的默认运算符(AND或OR),默认为'OR',有效选项为:'AND','OR' |
df | 要用作默认值的字段,其中查询字符串中未给出字段前缀 |
expand_wildcards | 是否将通配符表达式扩展为打开,关闭或两者的具体索引。默认为“open”,有效选项为:'open','closed','none','all' |
ignore_unavailable | 当不可用(丢失或关闭)时是否应忽略指定的具体索引 |
lenient | 指定是否应忽略基于格式的查询失败(例如向数字字段提供文本) |
lowercase_expanded_terms | 指定查询字词是否应该是小写的 |
min_score | 仅包括结果中具有特定_score值的文档 |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
q | 查询Lucene查询字符串语法 |
routing | 特定的路由值 |
search_shards(*args, **kwargs)
搜索分片api返回将执行搜索请求的索引和分片。这可以为解决问题或使用路由和分片首选项规划优化提供有用的反馈。http://www.elastic.co/guide/en/elasticsearch/reference/current/search-shards.html
parameters | explain |
---|---|
index | 要搜索的以逗号分隔的索引名称列表;使用_all或空字符串对所有索引执行操作 |
doc_type | 要搜索的以逗号分隔的文档类型列表;留空以对所有类型执行操作 |
allow_no_indices | 是否忽略通配符索引表达式是否解析为具体索引。(这包括_all字符串或未指定索引时) |
expand_wildcards | 是否将通配符表达式扩展为打开,关闭或两者的具体索引。默认为“open”,有效选项为:'open','closed','none','all' |
ignore_unavailable | 当不可用(丢失或关闭)时是否应忽略指定的具体索引 |
local | 返回本地信息,不从主节点检索状态(默认值:false) |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
routing | 特定的路由值 |
search_template(*args, **kwargs)
接受查询模板和键/值对映射的查询,以填充模板参数。http://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html
parameters | explain |
---|---|
index | 要搜索的以逗号分隔的索引名称列表;使用_all或空字符串对所有索引执行操作 |
doc_type | 要搜索的以逗号分隔的文档类型列表;留空以对所有类型执行操作 |
body | 搜索定义模板及其参数 |
allow_no_indices | 是否忽略通配符索引表达式是否解析为具体索引。(这包括_all字符串或未指定索引时) |
expand_wildcards | 是否将通配符表达式扩展为打开,关闭或两者的具体索引。默认为“open”,有效选项为:'open','closed','none','all' |
ignore_unavailable | 当不可用(丢失或关闭)时是否应忽略指定的具体索引 |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
routing | 以逗号分隔的特定路由值列表 |
scroll | 指定滚动搜索应保持索引的一致视图的时间长度 |
search_type | 搜索操作类型,有效选项为:'query_then_fetch','query_and_fetch','dfs_query_then_fetch','dfs_query_and_fetch','count','scan' |
suggest(*args, **kwargs)
建议功能通过使用建议器基于提供的文本建议类似的查找术语。http://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html
parameters | explain |
---|---|
body | 请求定义 |
index | 用于限制操作的以逗号分隔的索引名称列表;使用_all或空字符串对所有索引执行操作 |
allow_no_indices | 是否忽略通配符索引表达式是否解析为具体索引。(这包括_all字符串或未指定索引时) |
expand_wildcards | 是否将通配符表达式扩展为打开,关闭或两者的具体索引。默认为“open”,有效选项为:'open','closed','none','all' |
ignore_unavailable | 当不可用(丢失或关闭)时是否应忽略指定的具体索引 |
preference | 指定应对其执行操作的节点或分片(默认值:随机) |
routing | 特定的路由值 |
termvectors(*args, **kwargs)
返回特定文档字段中术语的信息和统计信息。该文档可以存储在索引中或由用户人工提供(在1.4中添加)。请注意,对于存储在索引中的文档,这是一个接近实时的API,因为术语向量在下次刷新之前不可用。http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-termvectors.html
parameters | explain |
---|---|
index | 文档所在的索引。 |
doc_type | 文档的类型。 |
id | 文档的id,如果未指定,则应提供doc param。 |
body | 定义参数和/或提供文档以获取termvectors。见文档。 |
dfs | 指定是否应返回分布式频率而不是shard频率。,默认为False |
field_statistics | 指定是否应返回文档计数,文档频率总和以及总术语频率之和。默认为True |
fields | 要返回的以逗号分隔的字段列表。 |
offsets | 指定是否应返回术语偏移量,默认为True |
parent | 文档的父ID。 |
payloads | 指定是否应返回术语有效负载。默认为True |
positions | 指定是否应返回术语位置。,默认为True |
preference | 指定应对其执行操作的节点或分片(默认值:随机)。 |
realtime | 指定请求是实时的而不是近实时的(默认值:true)。 |
routing | 特定的路由值。 |
term_statistics | 指定是否应返回总术语频率和文档频率。默认为False |
version | 并发控制的显式版本号 |
version_type | 特定版本类型,有效选择是:'internal','external','external_gte','force' |
update(*args, **kwargs)
根据提供的脚本或部分数据更新文档。http://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html
parameters | explain | |
---|---|---|
index | 索引的名称 | |
doc_type | 文档的类型 | |
id | 文档ID | |
body | 使用脚本或部分doc的请求定义 | |
consistency | 操作的显式写一致性设置,有效选择是:'one','quorum','all' | |
detect_noop | 指定为true将导致Elasticsearch检查是否有更改,如果没有,则将更新请求转换为noop。 | |
fields | 要在响应中返回的以逗号分隔的字段列表 | |
lang | 脚本语言(默认值:groovy) | |
parent | 父文档的ID。仅用于路由以及何时用于upsert请求 | |
refresh | 执行操作后刷新索引 | |
retry_on_conflict | 指定发生冲突时应重试操作的次数(默认值:0) | |
routing | 特定的路由值 | |
script | URL编码的脚本定义(而不是使用请求主体) | |
script_id | 存储脚本的ID | |
scripted_upsert | 如果应调用脚本或script_id中引用的脚本来执行插入,则为True | 默认为false |
timeout | 显式操作超时 | |
timestamp | 文档的显式时间戳 | |
ttl | 文档的到期时间 | |
version | 并发控制的显式版本号 | |
version_type | 特定版本类型,有效选择是:'internal','force' |
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”。
parameters | explain |
---|---|
error | 字符串错误消息。 |
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)是线程安全的。
还负责记录。
parameters | explain |
---|---|
host | 节点的主机名(默认值:localhost) |
port | 要使用的端口(整数,默认值:9200) |
url_prefix | elasticsearch的可选url前缀 |
timeout | 以秒为单位的默认超时(float,默认值:10) |
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协议的默认连接类。
parameters | explain | |||
---|---|---|---|---|
host | 节点的主机名(默认值:localhost) | |||
port | 要使用的端口(整数,默认值:9200) | |||
url_prefix | elasticsearch的可选url前缀 | |||
timeout | 以秒为单位的默认超时(float,默认值:10) | |||
http_auth | 可选的http auth信息,作为':'分隔的字符串或元组 | |||
use_ssl | 如果为True,则使用ssl进行连接 | |||
verify_certs | 是否验证SSL证书 | |||
ca_certs | CA bundle的可选路径。有关如何获取默认设置的说明,请参见http://urllib3.readthedocs.org/en/latest/security.html#using | certifi | with | urllib3 |
client_cert | 包含私钥和证书的文件的路径,或仅在使用client_key时的cert | |||
client_key | 如果使用单独的证书和密钥文件,则包含私钥的文件的路径(client_cert将仅包含证书) | |||
ssl_version | 要使用的SSL协议的版本。选项包括:SSLv23(默认)SSLv2 SSLv3 TLSv1(有关您环境的确切选项,请参阅ssl模块中的PROTOCOL_ *常量)。 | |||
ssl_assert_hostname | 如果不是False,则使用主机名验证 | |||
ssl_assert_fingerprint | 如果不是,则验证提供的证书指纹 | |||
maxsize | 将保持对此主机开放的最大连接数。 |
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)
使用请求库进行连接。
parameters | explain |
---|---|
http_auth | 可选的http auth信息,作为':'分隔的字符串或元组。任何值都将作为auth传递给请求。 |
use_ssl | 如果为True,则使用ssl进行连接 |
verify_certs | 是否验证SSL证书 |
ca_certs | CA bundle的可选路径。默认情况下,将使用标准请求的包。 |
client_cert | 包含私钥和证书的文件的路径,或仅在使用client_key时的cert |
client_key | 如果使用单独的证书和密钥文件,则包含私钥的文件的路径(client_cert将仅包含证书) |
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=, raise_on_exception=True, **kwargs)
Streaming bulk消耗传入的iterable中的操作,并产生每个操作的结果。对于非流式用例,使用bulk(),它是流式批量的包装器,一旦整个输入被消耗和发送,就会返回有关批量操作的摘要信息。
parameters | explain |
---|---|
client | 要使用的Elasticsearch实例 |
actions | 包含要执行的操作的iterable |
chunk_size | 发送给es的一个块中的文档数(默认值:500) |
max_chunk_bytes | 请求的最大大小(以字节为单位)(默认值:100MB) |
raise_on_error | 在某些块发生时,从最后一个块的执行中引发包含错误(作为.errors)的BulkIndexError。我们默认 raise。 |
raise_on_exception | 如果为False,则不将异常从调用传播到bulk,只报告失败的项目。 |
expand_action_callback | 对传入的每个操作执行的回调,应返回包含操作行和数据行的元组(如果应省略数据行,则返回None)。 |
elasticsearch.helpers.parallel_bulk(client, actions, thread_count=4, chunk_size=500, max_chunk_bytes=104857600, expand_action_callback=, **kwargs)
批量助手的并行版本一次在多个线程中运行。
parameters | explain |
---|---|
client | 要使用的Elasticsearch实例 |
actions | 包含操作的迭代器 |
thread_count | 用于批量请求的线程池的大小 |
chunk_size | 发送给es的一个块中的文档数(默认值:500) |
max_chunk_bytes | 请求的最大大小(以字节为单位)(默认值:100MB) |
raise_on_error | 在某些块发生时,从最后一个块的执行中引发包含错误(作为.errors)的BulkIndexError。我们默认 raise。 |
raise_on_exception | 如果为False,则不将异常从调用传播到bulk,只报告失败的项目。 |
expand_action_callback | 对传入的每个操作执行的回调,应返回包含操作行和数据行的元组(如果应省略数据行,则返回None)。 |
elasticsearch.helpers.bulk(client, actions, stats_only=False, **kwargs)
bulk()api的助手,它提供了一个更友好的人机界面 - 它消耗了一个 action 迭代器,并将它们以块的形式发送给elasticsearch。它返回一个包含摘要信息的元组 - 成功执行的操作数,如果stats_only设置为True,则显示错误列表或错误数。
有关更多可接受的参数,请参阅streaming_bulk()
parameters | explain |
---|---|
client | 要使用的Elasticsearch实例 |
actions | 包含操作的迭代器 |
stats_only | 如果为True,则仅报告成功/失败操作的数量,而不仅仅是成功的次数和错误响应列表 |
任何其他关键字参数将传递给用于执行操作的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。这可能是一项昂贵的操作,并且会抵消使用扫描的性能优势。
parameters | explain |
---|---|
client | 要使用的Elasticsearch实例 |
query | 用于search()api的body |
scroll | 指定滚动搜索应保持索引的一致视图的时间长度 |
raise_on_error | 如果遇到错误(某些分片无法执行),则引发异常(ScanError)。我们默认 raise。 |
preserve_order | 不要将search_type设置为scan,这将导致滚动分页并保留顺序。 请注意,这可能是一项非常昂贵的操作,并且很容易导致不可预测的结果,请谨慎使用。 |
任何其他关键字参数将传递给初始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,只传输数据。 |
parameters | explain |
---|---|
client | 要使用的Elasticsearch实例(如果指定了target_client,则为read) |
source_index | 从中读取文档的索引(或索引列表) |
target_index | 要填充的目标集群中的索引的名称 |
query | 用于search()api的body |
target_client | 可选,指定将用于写入(从而启用集群之间的重新索引) |
chunk_size | 发送给es的一个块中的文档数(默认值:500) |
scroll | 指定滚动搜索应保持索引的一致视图的时间长度 |
scan_kwargs | 要传递给scan()的其他kwargs |
bulk_kwargs | 要传递给bulk()的其他kwargs |