异步 DSL
搜索(Search)
- class elasticsearch.dsl.AsyncSearch
- __init__(using='default', index=None, **kwargs)
向elasticsearch发起搜索请求。
- Parameters:
using (str | Elasticsearch | AsyncElasticsearch) – 使用的`Elasticsearch`实例
using
index
kwargs (Any)
创建时提供的所有参数(或省略的参数)都可以通过相应方法(分别是`using`、index`和`doc_type)后续覆盖。
- collapse(field=None, inner_hits=None, max_concurrent_group_searches=None)
向搜索请求添加折叠信息。 如果调用时不提供
field
参数,将移除所有折叠要求,否则会用提供的参数替换现有要求。 此API返回Search对象的副本,因此可以链式调用。
- async delete()
delete()
通过委托给delete_by_query()
来执行查询。使用
params
方法指定你想传递给底层elasticsearch-py
的delete_by_query
辅助函数的任何额外参数 - https://elasticsearch-py.readthedocs.io/en/latest/api/elasticsearch.html#elasticsearch.Elasticsearch.delete_by_query- Return type:
AttrDict[Any]
- doc_type(*doc_type, **kwargs)
设置要搜索的文档类型。可以传入单个值或多个值。值可以是字符串或``Document``的子类。
也可以传入任意关键字参数,将文档类型映射到应使用的回调函数而非Hit类。
如果不提供doc_type参数,实例上存储的所有相关信息将被清除。
示例:
s = Search().doc_type(‘product’, ‘store’, User, custom=my_callback)
- async execute(ignore_cache=False)
执行搜索并返回一个包装所有数据的
Response
实例。- Parameters:
ignore_cache (bool) – 若设为
True
,连续调用将直接访问 ES,而忽略缓存结果。默认为 Falseignore_cache
- Return type:
Response[_R]
- classmethod from_dict(d)
从包含搜索体的原始字典构造新的 Search 实例。适用于从原始字典迁移的场景。
示例:
s = Search.from_dict({ "query": { "bool": { "must": [...] } }, "aggs": {...} }) s = s.filter('term', published=True)
- highlight(*fields, **kwargs)
请求对某些字段进行高亮显示。所有传入的关键字参数将作为
fields
参数中所有字段的参数。 示例:Search().highlight('title', 'body', fragment_size=50)
将生成等价于:
{ "highlight": { "fields": { "body": {"fragment_size": 50}, "title": {"fragment_size": 50} } } }
如果需要对不同字段设置不同选项,可以两次调用
highlight
:Search().highlight('title', fragment_size=50).highlight('body', fragment_size=100)
这将生成:
{ "highlight": { "fields": { "body": {"fragment_size": 100}, "title": {"fragment_size": 50} } } }
- highlight_options(**kwargs)
更新用于此请求的全局高亮选项。例如:
s = Search() s = s.highlight_options(order='score')
- index(*index)
设置搜索的索引。如果调用时不带参数,将移除所有索引信息。
示例:
s = Search() s = s.index('twitter-2015.01.01', 'twitter-2015.01.02') s = s.index(['twitter-2015.01.01', 'twitter-2015.01.02'])
- async iterate(keep_alive='1m')
返回一个生成器,迭代所有匹配查询的文档。
此方法使用时间点来提供一致的结果,即使在索引发生变化时也是如此。它应优先于
scan()
使用。- Parameters:
keep_alive (str) – 时间点的存活时间,每次新的搜索请求都会续期
keep_alive
- Return type:
AsyncIterator[_R]
- knn(field, k, num_candidates, query_vector=None, query_vector_builder=None, boost=None, filter=None, similarity=None, inner_hits=None)
添加k近邻(kNN)搜索。
- Parameters:
field (str | InstrumentedField) – 要搜索的向量字段,可以是字符串或文档类属性
k (int) – 返回的最近邻数量作为顶部命中
num_candidates (int) – 每个分片考虑的最近邻候选数量
query_vector_builder (Dict[str, Any] | None) – 指示如何构建查询向量的字典
boost (float | None) – kNN分数的浮点型提升因子
filter (Query | None) – 过滤可能匹配文档的查询
similarity (float | None) – 文档被视为匹配所需的最小相似度,浮点值
field
k
num_candidates
query_vector
query_vector_builder
boost
filter
similarity
inner_hits
- Return type:
示例:
s = Search() s = s.knn(field='embedding', k=5, num_candidates=10, query_vector=vector, filter=Q('term', category='blog')))
- params(**kwargs)
指定执行搜索时使用的查询参数。所有关键字参数将覆盖当前值。 可用参数请参阅 https://elasticsearch-py.readthedocs.io/en/latest/api/elasticsearch.html#elasticsearch.Elasticsearch.search
示例:
s = Search() s = s.params(routing='user-1', preference='local')
- point_in_time(keep_alive='1m')
打开一个可用于多次搜索的时间点(pit)。
此方法实现了一个上下文管理器,返回一个配置为在创建的 pit 内操作的搜索对象。
- Parameters:
keep_alive (str) – 时间点的存活时间,每次搜索请求都会续期
keep_alive
- Return type:
- rank(rrf=None)
定义一种组合和排序来自多个搜索的结果集的方法。至少需要2个结果集。
- Parameters:
- Return type:
示例:
s = Search() s = s.query('match', content='search text') s = s.knn(field='embedding', k=5, num_candidates=10, query_vector=vector) s = s.rank(rrf=True)
注意:此功能处于技术预览阶段,未来可能会变更。语法在正式发布前可能会发生变化。
- async scan()
将搜索转换为扫描搜索,并返回一个生成器来迭代所有匹配查询的文档。
使用
params
方法指定要传递给elasticsearch-py
底层scan
辅助函数的 额外参数 - https://elasticsearch-py.readthedocs.io/en/latest/helpers.html#scan推荐优先使用
iterate()
方法,因为它通过 Elasticsearch 时间点功能提供类似能力。- Return type:
AsyncIterator[_R]
- script_fields(**kwargs)
定义要在命中结果上计算的脚本字段。详见 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-script-fields.html
示例:
s = Search() s = s.script_fields(times_two="doc['field'].value * 2") s = s.script_fields( times_three={ 'script': { 'lang': 'painless', 'source': "doc['field'].value * params.n", 'params': {'n': 3} } } )
- search_after()
返回一个获取下一页结果的
Search
实例。此方法提供了一种简单的方式来使用
search_after
选项对长结果列表进行分页。例如:page_size = 20 s = Search()[:page_size].sort("date") while True: # 获取一页结果 r = await s.execute() # 处理当前页结果 # 如果到达末尾则退出循环 if len(r.hits) < page_size: break # 获取包含下一页结果的搜索对象 s = s.search_after()
注意
search_after
选项要求搜索必须具有显式的sort
排序。- Return type:
- sort(*keys)
向搜索请求添加排序信息。如果调用时不带参数,将移除所有排序要求。否则将替换现有排序。 可接受的参数形式为:
'some.field' '-some.other.field' {'different.field': {'any': 'dict'}}
例如:
s = Search().sort( 'category', '-title', {"price" : {"order" : "asc", "mode" : "avg"}} )
将按
category
、title``(降序)和 ``price``(使用 ``avg
模式升序)排序。此API返回Search对象的副本,因此可以链式调用。
- source(fields=None, **kwargs)
选择性控制 _source 字段的返回方式。
- Parameters:
- Return type:
当不提供任何参数时,每个匹配结果将返回完整文档。如果
fields
是字符串或字符串列表, 则包含指定的字段名或字段通配符。如果fields
是包含 ‘includes’ 和/或 ‘excludes’ 键的字典,则会相应包含或排除字段。多次调用此方法并使用相同命名参数时,新值将覆盖旧值。
示例:
s = Search() s = s.source(includes=['obj1.*'], excludes=["*.description"]) s = Search() s = s.source(includes=['obj1.*']).source(excludes=["*.description"])
- suggest(name, text=None, regex=None, **kwargs)
向搜索添加建议请求。
- Parameters:
- Return type:
所有关键字参数将被添加到建议体中。例如:
s = Search() s = s.suggest('suggestion-1', 'Elasticsearch', term={'field': 'body'})
- # 完成建议器的正则表达式查询
s = Search() s = s.suggest(‘suggestion-1’, regex=’py[thon|py]’, completion={‘field’: ‘body’})
- to_dict(count=False, **kwargs)
将搜索序列化为将作为请求体发送的字典。
- Parameters:
- Return type:
所有额外的关键字参数都将包含在字典中。
- update_from_dict(d)
将序列化体中的选项应用到当前实例。会就地修改对象。主要由
from_dict
使用。
- using(client)
将搜索请求与elasticsearch客户端关联。会返回一个新的副本,当前实例保持不变。
- Parameters:
client (str | Elasticsearch | AsyncElasticsearch) – 要使用的``elasticsearch.Elasticsearch``实例,或 在``elasticsearch.dsl.connections``中查找的别名
client
- Return type:
多重搜索(Multi-Search)
- class elasticsearch.dsl.AsyncMultiSearch
将多个
Search
对象合并为单个请求。- add(search)
向请求添加一个新的
Search
对象:ms = MultiSearch(index='my-index') ms = ms.add(Search(doc_type=Category).filter('term', category='python')) ms = ms.add(Search(doc_type=Blog))
- Parameters:
search (SearchBase[_R])
- Return type:
- doc_type(*doc_type, **kwargs)
设置要搜索的文档类型。可以传入单个值或多个值。值可以是字符串或``Document``的子类。
也可以传入任意关键字参数,将文档类型映射到应使用的回调函数而非Hit类。
如果不提供doc_type参数,实例上存储的所有相关信息将被清除。
示例:
s = Search().doc_type(‘product’, ‘store’, User, custom=my_callback)
- async execute(ignore_cache=False, raise_on_error=True)
执行多搜索请求并返回搜索结果的列表。
- index(*index)
设置搜索的索引。如果调用时不带参数,将移除所有索引信息。
示例:
s = Search() s = s.index('twitter-2015.01.01', 'twitter-2015.01.02') s = s.index(['twitter-2015.01.01', 'twitter-2015.01.02'])
- params(**kwargs)
指定执行搜索时使用的查询参数。所有关键字参数将覆盖当前值。 可用参数请参阅 https://elasticsearch-py.readthedocs.io/en/latest/api/elasticsearch.html#elasticsearch.Elasticsearch.search
示例:
s = Search() s = s.params(routing='user-1', preference='local')
- using(client)
将搜索请求与elasticsearch客户端关联。会返回一个新的副本,当前实例保持不变。
- Parameters:
client (str | Elasticsearch | AsyncElasticsearch) – 要使用的``elasticsearch.Elasticsearch``实例,或 在``elasticsearch.dsl.connections``中查找的别名
client
- Return type:
文档(Document)
- class elasticsearch.dsl.AsyncDocument
用于在elasticsearch中持久化文档的类模型。
- async classmethod bulk(actions, using=None, index=None, validate=True, skip_empty=True, **kwargs)
允许在单个请求中执行多个索引操作。
- Parameters:
actions (AsyncIterable[Self | Dict[str, Any]]) – 生成要索引的文档实例或批量操作字典的生成器。
using (str | AsyncElasticsearch | None) – 要使用的连接别名,默认为
'default'
index (str | None) – 要使用的 Elasticsearch 索引,如果
Document
已关联索引则可省略。validate (bool) – 设置为
False
跳过文档验证skip_empty (bool) – 设置为
False
将保留文档上的空值(None
,[]
,{}
)。否则这些值会被移除, 因为它们在 Elasticsearch 中没有意义。actions
using
index
validate
skip_empty
kwargs (Any)
- Return type:
所有额外关键字参数将原样传递给
Elasticsearch.bulk
。
- async delete(using=None, index=None, **kwargs)
删除 Elasticsearch 中的实例。
- Parameters:
index (str | None) – 要使用的 Elasticsearch 索引,如果
Document
已关联索引则可省略。using (str | AsyncElasticsearch | None) – 要使用的连接别名,默认为
'default'
using
index
kwargs (Any)
- Return type:
None
所有额外关键字参数将原样传递给
Elasticsearch.delete
。
- async classmethod exists(id, using=None, index=None, **kwargs)
根据文档的
id
检查Elasticsearch中是否存在该文档。- Parameters:
id (str) – 要检查存在性的文档
id
index (str | None) – 使用的Elasticsearch索引,如果
Document
已关联索引则可省略using (str | AsyncElasticsearch | None) – 使用的连接别名,默认为
'default'
id
using
index
kwargs (Any)
- Return type:
所有额外的关键字参数将原样传递给
Elasticsearch.exists
方法。
- async classmethod get(id, using=None, index=None, **kwargs)
根据文档的
id
从Elasticsearch中检索单个文档。- Parameters:
id (str) – 要检索文档的
id
index (str | None) – 使用的Elasticsearch索引,如果
Document
已关联索引则可省略using (str | AsyncElasticsearch | None) – 使用的连接别名,默认为
'default'
id
using
index
kwargs (Any)
- Return type:
Self | None
所有额外的关键字参数将原样传递给
Elasticsearch.get
方法。
- async classmethod init(index=None, using=None)
在Elasticsearch中创建索引并填充映射。
- Parameters:
index (str | None)
using (str | AsyncElasticsearch | None)
- Return type:
None
- async classmethod mget(docs, using=None, index=None, raise_on_error=True, missing='none', **kwargs)
根据多个文档的
id
批量检索文档。返回的实例列表顺序与请求顺序一致。- Parameters:
docs (List[Dict[str, Any]]) – 要检索文档的
id
列表,或符合 https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-multi-get.html 规范的文档规格列表index (str | None) – 使用的Elasticsearch索引,如果
Document
已关联索引则可省略using (str | AsyncElasticsearch | None) – 使用的连接别名,默认为
'default'
missing (str) – 当请求的某个文档不存在时的处理方式。有效选项为
'none'
(使用None
)、'raise'
(抛出NotFoundError
) 或'skip'
(忽略缺失文档)。docs
using
index
raise_on_error (bool)
missing
kwargs (Any)
- Return type:
所有额外的关键字参数将原样传递给
Elasticsearch.mget
方法。
- async save(using=None, index=None, validate=True, skip_empty=True, return_doc_meta=False, **kwargs)
将文档保存到 Elasticsearch。如果文档不存在则创建, 否则覆盖。如果操作导致新文档创建则返回
True
。- Parameters:
index (str | None) – 要使用的 Elasticsearch 索引,如果
Document
已关联索引则可省略。using (str | AsyncElasticsearch | None) – 要使用的连接别名,默认为
'default'
validate (bool) – 设置为
False
跳过文档验证skip_empty (bool) – 设置为
False
将保留文档上的空值(None
,[]
,{}
)。否则这些值会被移除, 因为它们在 Elasticsearch 中没有意义。return_doc_meta (bool) – 设置为
True
返回更新 API 调用的所有元数据, 而不仅仅是操作结果using
index
validate
skip_empty
return_doc_meta
kwargs (Any)
- Return type:
所有额外关键字参数将原样传递给
Elasticsearch.index
。
- classmethod search(using=None, index=None)
创建一个
Search
实例,用于在该Document
上进行搜索。- Parameters:
using (str | AsyncElasticsearch | None)
index (str | None)
- Return type:
- to_dict(include_meta=False, skip_empty=True)
将实例序列化为字典以便保存到elasticsearch中。
- async update(using=None, index=None, detect_noop=True, doc_as_upsert=False, refresh=False, retry_on_conflict=None, script=None, script_id=None, scripted_upsert=False, upsert=None, return_doc_meta=False, **fields)
对文档进行部分更新,指定需要更新的字段, 实例和 Elasticsearch 中的文档都会被更新:
doc = MyDocument(title='Document Title!') doc.save() doc.update(title='New Document Title!')
- Parameters:
index (str | None) – 要使用的 Elasticsearch 索引,如果
Document
已关联索引则可省略。using (str | AsyncElasticsearch | None) – 要使用的连接别名,默认为
'default'
detect_noop (bool) – 设置为
False
禁用无操作检测。refresh (bool) – 控制此请求的更改何时对搜索可见。 设置为
True
可立即生效。retry_on_conflict (int | None) – 在更新的获取和索引阶段之间, 可能有其他进程已经更新了同一文档。默认情况下, 更新会因版本冲突异常而失败。retry_on_conflict 参数 控制在最终抛出异常前重试更新的次数。
doc_as_upsert (bool) – 设置为 true 时,将使用 doc 内容作为 upsert 值, 而不是发送部分文档加 upsert 文档
script (str | Dict[str, Any] | None) – 脚本源代码字符串,或包含要更新脚本属性的字典。
return_doc_meta (bool) – 设置为
True
返回索引 API 调用的所有元数据, 而不仅仅是操作结果using
index
detect_noop
doc_as_upsert
refresh
retry_on_conflict
script
script_id (str | None)
scripted_upsert (bool)
return_doc_meta
fields (Any)
- Returns:
操作结果 noop/updated
- Return type:
索引(Index)
- class elasticsearch.dsl.AsyncIndex
- __init__(name, using='default')
- Parameters:
name (str) – 索引名称
using (str | AsyncElasticsearch) – 要使用的连接别名,默认为
'default'
name
using
- aliases(**kwargs)
向索引定义添加别名:
i = Index('blog-v2') i.aliases(blog={}, published={'filter': Q('term', published=True)})
- async analyze(using=None, **kwargs)
对文本执行分析过程并返回文本的分词结果。
任何额外的关键字参数将原封不动地传递给
Elasticsearch.indices.analyze
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- analyzer(*args, **kwargs)
显式地向索引添加一个分析器。注意映射中定义的所有自定义分析器 也会被创建。这对搜索分析器特别有用。
示例:
from elasticsearch.dsl import analyzer, tokenizer my_analyzer = analyzer('my_analyzer', tokenizer=tokenizer('trigram', 'nGram', min_gram=3, max_gram=3), filter=['lowercase'] ) i = Index('blog') i.analyzer(my_analyzer)
- async clear_cache(using=None, **kwargs)
清除所有缓存或与该索引关联的特定缓存。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.clear_cache
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- clone(name=None, using=None)
创建具有另一个名称或连接别名的实例副本。 适用于创建具有共享配置的多个索引:
i = Index('base-index') i.settings(number_of_shards=1) i.create() i2 = i.clone('other-index') i2.create()
- Parameters:
name (str | None) – 索引名称
using (str | AsyncElasticsearch | None) – 要使用的连接别名,默认为
'default'
name
using
- Return type:
- async close(using=None, **kwargs)
在elasticsearch中关闭索引。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.close
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async create(using=None, **kwargs)
在 elasticsearch 中创建索引。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.create
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async delete(using=None, **kwargs)
在elasticsearch中删除索引。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.delete
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async delete_alias(using=None, **kwargs)
删除特定别名。
任何额外的关键字参数将原封不动地传递给
Elasticsearch.indices.delete_alias
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- document(document)
将
Document
子类与索引关联。 这意味着当创建此索引时,它将包含该Document
的映射。如果Document
类尚未定义默认索引(通过定义class Index
),则将使用此实例。可用作装饰器:i = Index('blog') @i.document class Post(Document): title = Text() # 创建索引,包括 Post 的映射 i.create() # .search() 现在将返回一个 Search 对象,该对象会返回 # 正确反序列化的 Post 实例 s = i.search()
- Parameters:
document (DocumentMeta)
- Return type:
DocumentMeta
- async exists(using=None, **kwargs)
如果索引已存在于elasticsearch中则返回``True``。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.exists
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
- async exists_alias(using=None, **kwargs)
返回布尔值表示该索引是否存在给定别名。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.exists_alias
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
- async flush(using=None, **kwargs)
对索引执行刷新写入操作。
任何额外的关键字参数将原封不动地传递给
Elasticsearch.indices.flush
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async forcemerge(using=None, **kwargs)
强制合并API允许通过API强制合并索引。合并涉及Lucene索引在每个分片中 持有的段数量。强制合并操作可以通过合并段来减少其数量。
此调用将阻塞直到合并完成。如果http连接丢失,请求将在后台继续, 任何新的请求都将阻塞直到先前的强制合并完成。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.forcemerge
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async get(using=None, **kwargs)
获取索引API允许检索关于索引的信息。
任何额外的关键字参数将原封不动地传递给
Elasticsearch.indices.get
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async get_alias(using=None, **kwargs)
检索指定的别名。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.get_alias
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async get_field_mapping(using=None, **kwargs)
获取特定字段的映射定义。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.get_field_mapping
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async get_mapping(using=None, **kwargs)
获取特定类型的映射定义。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.get_mapping
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async get_settings(using=None, **kwargs)
检索索引的设置。
任何额外的关键字参数将原封不动地传递给
Elasticsearch.indices.get_settings
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- mapping(mapping)
将映射(
Mapping
的实例)与此索引关联。 这意味着当创建此索引时,它将包含由这些映射定义的文档类型的映射。- Parameters:
mapping (MappingBase)
- Return type:
None
- async open(using=None, **kwargs)
在elasticsearch中打开索引。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.open
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async put_alias(using=None, **kwargs)
为索引创建别名。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.put_alias
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async put_mapping(using=None, **kwargs)
为特定类型注册特定的映射定义。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.put_mapping
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async put_settings(using=None, **kwargs)
实时更改特定索引级别的设置。
任何额外的关键字参数将原封不动地传递给
Elasticsearch.indices.put_settings
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async recovery(using=None, **kwargs)
索引恢复API提供对索引正在进行的分片恢复的洞察。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.recovery
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async refresh(using=None, **kwargs)
对索引执行刷新操作。
任何额外的关键字参数将原封不动地传递给
Elasticsearch.indices.refresh
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async save(using=None)
将索引定义与elasticsearch同步,如果索引不存在则创建,如果存在则更新其设置和映射。
注意某些设置和映射更改无法在打开的索引上执行(或根本无法在现有索引上执行), 对于这些情况,此方法将抛出底层异常。
- Parameters:
using (str | AsyncElasticsearch | None)
- Return type:
Optional[ObjectApiResponse[Any]]
- search(using=None)
返回一个
Search
对象,用于搜索该索引 (或属于此模板的所有索引)及其Document
s。- Parameters:
using (str | AsyncElasticsearch | None)
- Return type:
- async segments(using=None, **kwargs)
提供构建Lucene索引(分片级别)的低级段信息。
任何额外的关键字参数将原封不动地传递给
Elasticsearch.indices.segments
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- settings(**kwargs)
向索引添加设置:
i = Index('i') i.settings(number_of_shards=1, number_of_replicas=0)
多次调用
settings
将合并键值,后调用的会覆盖先前的设置。
- async shard_stores(using=None, **kwargs)
提供索引分片副本的存储信息。存储信息报告了哪些节点存在分片副本、 分片副本版本(指示其新旧程度),以及在打开分片索引时或早期引擎 故障中遇到的任何异常。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.shard_stores
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async shrink(using=None, **kwargs)
shrink index API 允许你将现有索引收缩为一个具有更少主分片的新索引。 目标索引中的主分片数量必须是源索引分片数的因数。例如,一个具有8个主分片的索引 可以收缩为4、2或1个主分片,而具有15个主分片的索引可以收缩为5、3或1个主分片。 如果索引的分片数量是质数,则只能收缩为单个主分片。在收缩之前,索引中每个分片的 (主分片或副本分片)副本必须位于同一节点上。
任何额外的关键字参数将原封不动地传递给
Elasticsearch.indices.shrink
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- async stats(using=None, **kwargs)
检索索引上不同操作的统计信息。
任何额外的关键字参数将原封不动地传递给
Elasticsearch.indices.stats
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
- updateByQuery(using=None)
返回一个
UpdateByQuery
对象,用于搜索该索引 (或属于此模板的所有索引)并更新符合搜索条件的文档。更多信息请参阅: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html
- Parameters:
using (str | AsyncElasticsearch | None)
- Return type:
- async validate_query(using=None, **kwargs)
验证一个可能耗时的查询而不实际执行它。
任何额外的关键字参数将原样传递给
Elasticsearch.indices.validate_query
。- Parameters:
using (str | AsyncElasticsearch | None)
kwargs (Any)
- Return type:
ObjectApiResponse[Any]
映射(Mapping)
分面搜索(Faceted Search)
- class elasticsearch.dsl.AsyncFacetedSearch
- __init__(query=None, filters={}, sort=[])
- add_filter(name, filter_values)
为分面添加筛选器。
- aggregate(search)
添加代表所选分面的聚合,包括可能的筛选器。
- Parameters:
search (SearchBase[_R])
- Return type:
None
- build_search()
构建
Search
对象- Return type:
SearchBase[_R]
- async execute()
执行搜索并返回响应。
- Return type:
Response[_R]
- filter(search)
向搜索请求添加
post_filter
,根据分面筛选器缩小结果范围。- Parameters:
search (SearchBase[_R])
- Return type:
SearchBase[_R]
- highlight(search)
为所有字段添加高亮显示
- Parameters:
search (SearchBase[_R])
- Return type:
SearchBase[_R]
- params(**kwargs)
指定执行搜索时使用的查询参数。所有关键字参数将覆盖当前值。 有关所有可用参数,请参阅 https://elasticsearch-py.readthedocs.io/en/latest/api/elasticsearch.html#elasticsearch.Elasticsearch.search
- Parameters:
kwargs (Any)
- Return type:
None
- query(search, query)
向
search
添加查询部分。如需自定义使用的查询,请重写此方法。
- Parameters:
search (SearchBase[_R])
query (str | Query)
- Return type:
SearchBase[_R]
- search()
返回添加了分面的基础 Search 对象。
你可以通过重写此方法并返回修改后的搜索对象来自定义查询。
- Return type:
AsyncSearch[_R]
- sort(search)
向请求添加排序信息
- Parameters:
search (SearchBase[_R])
- Return type:
SearchBase[_R]
按查询更新(Update by Query)
- class elasticsearch.dsl.AsyncUpdateByQuery
- __init__(**kwargs)
向Elasticsearch发送按查询更新请求。
- Parameters:
using – 使用的`Elasticsearch`实例
index – 限定搜索的索引
doc_type – 仅查询此类型
kwargs (Any)
创建时提供的所有参数(或省略的参数)都可以在后续通过方法覆盖(分别是`using`、index`和`doc_type)。
- doc_type(*doc_type, **kwargs)
设置要搜索的文档类型。可以传入单个值或多个值。值可以是字符串或``Document``的子类。
也可以传入任意关键字参数,将文档类型映射到应使用的回调函数而非Hit类。
如果不提供doc_type参数,实例上存储的所有相关信息将被清除。
示例:
s = Search().doc_type(‘product’, ‘store’, User, custom=my_callback)
- async execute()
执行搜索并返回一个包装所有数据的
Response
实例。- Return type:
UpdateByQueryResponse[_R]
- classmethod from_dict(d)
从包含搜索体的原始字典构造新的`UpdateByQuery`实例。适用于从原始字典迁移的场景。
示例:
ubq = UpdateByQuery.from_dict({ "query": { "bool": { "must": [...] } }, "script": {...} }) ubq = ubq.filter('term', published=True)
- index(*index)
设置搜索的索引。如果调用时不带参数,将移除所有索引信息。
示例:
s = Search() s = s.index('twitter-2015.01.01', 'twitter-2015.01.02') s = s.index(['twitter-2015.01.01', 'twitter-2015.01.02'])
- params(**kwargs)
指定执行搜索时使用的查询参数。所有关键字参数将覆盖当前值。 可用参数请参阅 https://elasticsearch-py.readthedocs.io/en/latest/api/elasticsearch.html#elasticsearch.Elasticsearch.search
示例:
s = Search() s = s.params(routing='user-1', preference='local')
- response_class(cls)
覆盖响应使用的默认包装器。
- script(**kwargs)
定义要执行的更新操作: 详见https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting-using.html
注意:API只接受单个脚本,因此多次调用script方法会覆盖之前的设置。
示例:
ubq = Search() ubq = ubq.script(source="ctx._source.likes++"") ubq = ubq.script(source="ctx._source.likes += params.f"", lang="expression", params={'f': 3})
- to_dict(**kwargs)
将搜索序列化为字典,该字典将作为请求体发送。
所有额外的关键字参数都将包含在字典中。
- update_from_dict(d)
将序列化体中的选项应用到当前实例。原地修改对象。主要由``from_dict``方法使用。
- using(client)
将搜索请求与elasticsearch客户端关联。会返回一个新的副本,当前实例保持不变。
- Parameters:
client (str | Elasticsearch | AsyncElasticsearch) – 要使用的``elasticsearch.Elasticsearch``实例,或 在``elasticsearch.dsl.connections``中查找的别名
client
- Return type: