变更日志

8.14.0 (2024-06-10)

  • 添加了 text_expansion 查询子句 (#1837)

  • 添加了 Response.search_after()Search.search_after() 方法,用于高效迭代 (#1829)

  • 添加了时间点支持和 Search 类中的 iterate() 方法 (#1833)

  • 添加了对在 Search 类中多次切片的支持 (#1771) 添加了对 Completion.suggest() 中正则表达式的支持 (#1836)

  • 修复了 Completion 类的 suggest() 方法,以正确格式化请求。 (#1836)

  • 修复了 Document.update(),使其接受设置为 None 或为空的字段 (#1820)

  • 开始进行类型提示工作(感谢 Caio Fontes 领导这项工作!)
    • function.py 中添加了类型提示 (#1827)

    • query.py 中添加了类型提示 (#1821)

8.13.1 (2024-04-30)

  • 添加了对 knn 作为查询选项的支持 (#1770)

  • 使密集向量类型的 dims 属性可选 (#1776)

  • 添加了 search.knn() 方法中缺少的 inner_hits 选项 (#1777)

  • 添加了对在 InnerDoc 属性中检测文档更新的支持 (#1535)

  • 更改了 _expand__to_dot 设置,以便在运行时解析 (#1633)

  • 添加了在使用不支持的 minimum_should_match 值时显示显式错误消息 (#1774)

  • 添加了 EmptySearch 类 (#1780)

  • 添加了几个缺少的聚合
  • FacetedSearch 对象中添加了 params 选项 (#1500)

  • 添加了对在文档更新的 script 选项中传递字典的支持 (#1560)

  • AttrDict 类中添加了 keys()items() 方法 (#1784)

  • AttrList 类中添加了 to_list() 方法 (#1584)

  • 修复了各种文档问题和错别字 (#1769, #1615, #1585, #1318, #1223)

  • 添加了向量搜索示例 (#1778)

8.13.0 (2024-04-03)

  • 添加了 asyncio 支持 (#1714)

  • 放弃了对 Python 3.7 的支持 (#1717)

  • 停止在 UpdateByQuery 中混合主体和参数 (#1702)

8.12.0 (2024-01-18)

  • 添加了 Search.knn() 方法 (#1691)

  • 添加了 Search.rank() 方法(未记录,因为它仍在技术预览中) (#1692)

  • 修复了从字典中导入 collapse (#1689)

8.11.0 (2023-11-13)

  • 添加了对 Python 3.12 的支持 (#1680)

  • 添加了 Search.collapse() (#1649,由 @qcoumes 贡献)

8.9.0 (2023-09-07)

  • 添加了 Elasticsearch 8.x 支持 (#1664)

  • 放弃了对 Python 2.7 和 3.5 的支持 (#1606,由 @hugovk 贡献)

  • 添加了对 Python 3.10 和 3.11 的支持 (#1608,由 @hugovk 贡献)

  • 添加了 MultiTerms 聚合 (#1543,由 @Telomeraz 贡献)

  • 添加了 CombinedFields 查询 (#1557,由 @Telomeraz 贡献)

7.4.1 (2023-03-01)

  • 修复了 Python Elasticsearch 客户端中对 body 参数的过时用法发出的 DeprecationWarnings

7.4.0 (2021-07-15)

  • 添加了 ConstantKeywordRankFeatures 字段类型 (#1456#1465)

  • 添加了 ScriptScore 查询类型 (#1464)

  • 添加了 UpdateByQueryResponse.success() 方法 (#1463)

  • 添加了 return_doc_meta 参数到 Document.save()Document.update(),用于访问完整的 API 响应 (#1466)

  • 添加了对 calendar_intervalfixed_interval 的支持到 DateHistogramFacet (#1467)

  • 添加了 Document.exists() 方法 (#1447,由 @dem4ply 贡献)

  • 添加了对 DateHistogramFacetyear 间隔的支持 (#1502,由 @nrsimha 贡献)

  • 修复了 to_dict() 应该在 Search.extras**kwargs 上递归调用时的错误 (#1458)

  • 修复了空 Bool 查询的逆应该为 MatchNone (#1459)

  • 修复了 retry_on_conflictDocument.update() 中的乐观并发控制之间的错误 (#1461,由 @armando1793 贡献)

7.3.0 (2020-09-16)

  • 添加了 IntervalsMatchBoolPrefixShapeWrapper 查询 (#1392#1418)

  • 添加了 BoxplotRareTermsVariableWidthHistogramMedianAbsoluteDeviationTTestCumulativeCardinalityInferenceMovingPercentilesNormalize 聚合 (#1416#1418)

  • 添加了 __all__ 并从 elasticsearch_dsl 命名空间中删除了所有星号导入,以避免泄漏意外的名称 (#1390)

  • 修复了 ObjectNested 可能改变内部 doc_class 映射的问题 (#1255,由 @l1nd3r0th 贡献)

  • 修复了查询 SpanContaining 中的拼写错误,之前是 SpanContainining (#1418)

7.2.1 (2020-06-02)

  • 修复了对 Search 进行切片时会导致 size 为负数而不是 0 的问题。(#1360,由 @bk-equityzen 贡献)

7.2.0 (2020-05-04)

7.1.0 (2019-10-23)

  • Document.delete 的乐观并发控制

  • 删除已弃用的 DocType

  • ES 7.x 的正确计数缓存

  • 支持 multiplexer token 过滤器

  • FacetedSearch 中不要替换 __

7.0.0 (2019-04-26)

  • 与 Elasticsearch 7.x 兼容

  • Document.save() 现在返回 "created""updated"

  • 放弃了对 Python 2.6、3.2 和 3.3 的支持

  • 使用 fields 时,值不再合并到文档主体中,只能通过 .meta.fields 访问

6.4.0 (2019-04-26)

  • Index.document 现在仅在使用默认索引时才正确设置 Document_index (#1091)

  • Document 继承允许覆盖 ObjectNested 字段元数据,如 dynamic

  • 添加 auto_date_histogram 聚合

  • 在 (反) 序列化时不要更改数据

6.3.1 (2018-12-05)

  • Analyzer.simulate 现在支持内置分析器

  • Range 包装器的正确 (反) 序列化

  • search_analyzer 添加到 Completion 字段

6.3.0 (2018-11-21)

  • 修复了定义不同 doc_type 名称的逻辑。

  • retry_on_conflict 参数添加到 Document.update

  • 即使在 Document 上未定义,现在也使用在索引上定义的字段来 (反) 序列化数据

  • 允许 Index.analyzer 构造分析器

  • 在调用 Index.analyzer 时检测分析器定义中的冲突

  • 在创建索引时检测映射冲突

  • simulate 方法添加到 analyzer 对象,以使用 _analyze API 测试分析器。

  • scriptscript_id 选项添加到 Document.update

  • Facet 现在可以使用除 doc_count 之外的其他指标

  • Range 对象有助于存储和处理 _range 字段

  • 改进了 Index.save 的行为,使其在索引已存在时能更好地工作

  • 复合聚合现在正确地支持多个 sources 聚合

  • 由 @emarcey 实现的 UpdateByQuery

6.2.1 (2018-07-03)

  • 允许用户在 Index 中重新定义 doc_type (#929)

  • 直接在 elasticsearch_dsl 模块中包含 DocType (#930)

6.2.0 (2018-07-03)

向后不兼容的更改 - DocType 重构。

6.2.0 中,我们重构了 DocType 类并将其重命名为 Document。这样做的主要动机是支持从 elasticsearch 本身在 7.x 中删除类型 - 我们需要以某种方式将 IndexDocument 类关联起来。为此,我们将之前在 class Meta 中定义的选项拆分到它和新引入的 class Index 之间。拆分是,所有与映射相关的选项(如设置 dynamic = MetaField('strict'))保留在 class Meta 中,而所有用于索引定义的选项(如 settingsnamealiases)都移动到了新的 class Index 中。

您可以在 examples 目录中看到一些新功能的示例。文档已更新以反映新的 API。

DocType 现在只是 Document 的别名,将在 7.x 中删除。但是,它确实以新的方式工作,这并不完全向后兼容。

  • Percolator 字段现在期望 Query 对象作为值

  • 您不能再通过指定 ._id 或类似的方式访问 Document 实例上的元字段。相反,所有访问都需要通过 .meta 属性进行。

  • FacetedSearch 实现了 NestedFacet。这需要稍微改变 Facet.get_values 的语义,它现在期望整个聚合数据字典,而不仅仅是 buckets。对于重新定义该方法的自定义聚合来说,这是一个向后不兼容的更改。

  • Document.update 现在支持 refresh 关键字参数

  • DslBase._clone 现在生成一个浅拷贝,这意味着修改现有查询可能会对现有 Search 对象产生影响。

  • 空的 Search 不再默认使用 match_all 查询,而是将 query 键留空。这在使用 suggest 时会导致向后不兼容。

6.1.0 (2018-01-09)

  • 删除了 String 字段。

  • 修复了 Object/Nested 反序列化问题。

6.0.1 (2018-01-02)

修复 Python 2.7 的 wheel 包问题 (#803)

6.0.0 (2018-01-01)

向后不兼容的版本,与 elasticsearch 6.0 兼容,更改包括

  • 使用 doc 作为默认的 DocType 名称,此更改包括:* DocType._doc_type.matches 方法现在用于确定应为命中使用哪个 DocType,而不是仅仅检查 _type

  • NestedObject 字段重构,使用新引入的 InnerDoc 类。要定义 Nested/Object 字段,只需定义 InnerDoc 子类,然后在定义字段时使用它。

    class Comment(InnerDoc):
        body = Text()
        created_at = Date()
    
    class Blog(DocType):
        comments = Nested(Comment)
    
  • connections 单例上的方法现在直接在 connections 模块上公开。

  • 字段值现在仅在从 elasticsearch(通过 from_es 方法)获取时才被反序列化,而不是在 python 中分配值时(无论是通过直接分配还是在 __init__ 中)。

5.4.0 (2017-12-06)

  • 修复 ip_range 聚合并将其类重命名为 IPRangeIprange 保留用于向后兼容性。

  • 修复从字典加载具有元数据的聚合时的错误。

  • 添加对 Keyword 字段的 normalizer 参数的支持。

  • IndexTemplate 现在可以使用与 Index 相同的 API 指定。

  • Boolean 字段现在接受 "false" 作为 False

5.3.0 (2017-05-18)

  • 修复常数分数查询定义。

  • DateHistogramFacet 现在可以使用 datetime 对象。

  • 在从字典创建查询时,尊重字段名称中的 __

5.2.0 (2017-03-26)

  • 确保所有响应结构都是可腌制的(用于缓存)。

  • exclude 添加到 Search

  • 修复度量聚合反序列化。

  • Index 类上公开所有索引级 API。

  • delete 添加到 Search,它调用 delete_by_query API。

5.1.0 (2017-01-08)

  • ResultResultMeta 分别重命名为 HitHitMeta

  • Response 现在存储 Search,它作为第一个参数传递给 __init__

  • 聚合结果现在被包装在类中并被正确反序列化。

  • Date 字段现在允许使用 Java 格式(以毫秒为单位)的数字时间戳。

  • 添加了 API 文档。

  • 用手动创建的类替换了生成的类。

5.0.0 (2016-11-04)

与 elasticsearch 5.0 兼容的版本。

重大更改

  • String 字段类型已被弃用,取而代之的是 TextKeyword

  • fields 方法已被删除,取而代之的是 source 过滤。

2.2.0 (2016-11-04)

  • 访问缺失的字符串字段不再返回 '',而是返回 None

  • 修复 bool 的 |& 运算符以及 minimum_should_match 的问题。

2.1.0 (2016-06-29)

  • inner_hits 现在也被包装在 Response 中。

  • + 运算符已弃用,.query() 现在使用 & 来组合查询。

  • mget 方法添加到 DocType

  • 修复了对“空”值的验证,例如 ''[]

2.0.0 (2016-02-18)

与 Elasticsearch 2.x 兼容。

  • 过滤器已被删除,并添加了额外的查询。现在可以使用 Q 而不是 F 对象。

  • Search.filter 现在只是在过滤器上下文中添加查询的快捷方式。

  • 添加了对管道聚合的支持。

向后不兼容的更改

  • 分析对象和类的列表已被删除,任何用作分词器、字符或标记过滤器或分析器的字符串都将被视为内置。

  • 内部方法 Field.to_python 已重命名为 deserialize,并且添加了可选的字段序列化机制。

  • 自定义响应类现在由 response_class 方法设置,而不是 Search.execute 的关键字参数。

其他更改

  • FacetedSearch 现在支持通过切片进行分页。

0.0.10 (2016-01-24)

  • 现在可以迭代 Search 来获取命中结果。

  • Search 现在缓存来自 Elasticsearch 的响应。

  • DateHistogramFacet 现在默认返回空间隔。

  • Search 不再接受位置参数。

  • 实验性的 MultiSearch API。

  • 添加了与 _suggest 端点通信的选项 (execute_suggest)。

0.0.9 (2015-10-26)

  • FacetedSearch 现在使用自己的 Facet 类,而不是内置的聚合。

0.0.8 (2015-08-28)

  • 0.0.50.0.6 在 pypi 上发布了损坏的 .tar.gz,只是一个构建修复。

0.0.5 (2015-08-27)

  • 通过 #143 添加了对 (index/search)_analyzer 的支持,感谢 @wkiser!

  • 即使通过 ['field']AttrDict 上访问的键也将被包装在 Attr[Dict|List] 中,以保持一致性。

  • 添加了一个方便的选项,可以指定一个自定义的 doc_class 来包装内部/嵌套文档。

  • blank 选项已被删除。

  • 访问空字段时不再引发 AttributeError

  • required 标志添加到字段以及对字段和(子)文档的验证钩子。

  • AttrDict 中删除了 get 方法。改用 getattr(d, key, default)

  • 添加了 FacetedSearch,用于轻松声明式分面导航。

0.0.4 (2015-04-24)

  • 元数据字段(如 id、parent、index、version 等)必须使用 meta 属性(在 ResultDocType 对象上)或使用它们的带下划线的变体 (_id_parent 等) 来存储(和检索)。

  • Search 上的查询现在可以直接赋值。

  • suggest 方法添加到 Search

  • Search.doc_type 现在直接接受 DocType 子类。

  • Properties.property 方法已重命名为 field,以保持一致性。

  • Date 字段现在在数据不正确时引发 ValidationException

0.0.3 (2015-01-23)

添加了持久层(MappingDocType),以及各种修复和改进。

0.0.2 (2014-08-27)

修复了 Python 2 的问题。

0.0.1 (2014-08-27)

初始版本。