为guillotina提供elasticsearch目录支持
项目描述
GUILLOTINA_ELASTICSEARCH
Guillotina 对 Elasticsearch 的集成。支持 Elasticsearch 7.x 和 8.x
安装
pip install guillotina_elasticsearch 默认支持 Elasticsearch 8.x。
配置
config.yaml 文件可以包含 elasticsearch 部分
elasticsearch:
index_name_prefix: "guillotina-"
connection_settings:
hosts:
- "http://127.0.0.1:9200"
sniffer_timeout: 0.5
sniff_on_start: true
security_query_builder: "guillotina_elasticsearch.queries.build_security_query"
示例自定义 security_query_builder 设置
async def security_query_builder(container, request):
return {
'query': {
'bool': {
'filter': {
'bool': {
'should': [{'match': {'access_roles': "foobar"}}],
'minimum_should_match': 1
}
}
}
}
}
开发和测试
为 >=3,8 的版本设置 Python 虚拟环境。已测试 3.8, 3.9 和 3.10
# Linux
pip install -e ".[test]"
pytest tests/
默认情况下,测试运行 ES 固定版本 8。如果您想为 ES 版本 7 运行测试,请在 conftest.py 中更改图像版本。
站点安装
POST SITE_URL/@catalog
{}
站点卸载
DELETE SITE_URL/@catalog
{}
迁移命令
guillotina_elasticsearch 随带一个 es-migrate Guillotina 命令
./bin/g es-migrate
此命令将在索引上执行实时迁移。它通过在另一个索引仍然活跃的同时对新索引执行重新索引来实现。
在实时迁移期间,对两个索引都执行新索引和删除请求。
它还非常智能地处理迁移,通过对映射执行 diff,只重新索引已更改的字段。
8.0.0中的重大更改
在此版本中,库 elasticsearch 7 已升级到 elasticsearch 8。在旧 Elasticsearch 配置文件设置中需要考虑一些更改。
Guillotina 的配置文件中的 hosts 字段需要包含方案:http 或 https
Guillotina 的配置文件中的 sniffer_timeout 不能为 None
已删除 doc_type。在请求中指定类型不再受支持。
已删除 include_type_name 参数。
config.yaml 文件中的 elasticsearch 字段直接传递给实例化 AsyncElasticsearch。类定义与同步版本相同,要了解如何配置您的 ES,请参阅:https://elasticsearch-py.elastic.ac.cn/en/v8.12.0/api/elasticsearch.html#elasticsearch.Elasticsearch
2.0中的重大更改
ES 6 不支持 doc 类型
aioes 已弃用
IElasticSearchUtility 变更
查询:doc_type 参数不再使用
IElasticSearchUtility.conn 变更
put_mapping
put_settings
put_alias
get:需要 doc_type=DOC_TYPE
bulk:需要 doc_type=DOC_TYPE
conn.transport.get_connection(): ._session -> .session, ._base_url -> .base_url
conn.transport.get_connection().[method] -> 需要包含 content-type: application/json
测试
如果容器 es (elasticsearch) 在运行测试时启动失败,您应增加 max_map_count。命令
# Linux
sudo sysctl -w vm.max_map_count=262144
索引映射
当将映射应用到 Elastic Search 时,所有映射都进行了扁平化。
Elasticsearch 不支持不同类型的不同映射。
如果有冲突的映射,此插件将选择最后在 applications 列表中列出的插件中的映射,这遵循 Guillotina 允许最后列出的应用程序覆盖先前列出应用程序设置的 guillotina 实践
安全配置
elasticsearch:
index_name_prefix: "guillotina-"
connection_settings:
hosts:
- "127.0.0.1:9200"
sniffer_timeout: 0.5
sniff_on_start: true
use_ssl: true
http_auth: admin:admin
8.0.6 (2024-10-01)
在更新 [nilbacardit26] 时,每次数据批量插入时都记录日志结果
8.0.5 (2024-10-01)
如果没有要显示的结果,则不记录日志,以防止错误 [nilbacardit26]
8.0.4 (2024-07-19)
在迁移时添加错误的理由
在 get_doc_count 协程中添加查询参数 [nilbacardit26]
8.0.3 (2024-04-10)
添加搜索分析器功能 [nilbacardit26]
8.0.2 (2024-03-25)
能够使用多字段搜索 [nilbacardit26]
8.0.1 (2024-03-21)
在迁移过程中删除索引时添加缺少的索引 kwarg [nilbacardit26]
8.0.0 (2024-01-23)
支持 Elasticsearch 8。
将 ES 固定版本更改为 bitnami 版本 8。两个版本都通过测试
从 get 调用中删除已弃用的 doc_type 参数。
停止支持 elastic search 6.x [nilbacardit26]
7.0.5 (2023-12-20)
修复 __init__.py 中的应用程序:从其中删除 guillotina_elasticsearch
7.0.4 (2023-12-15)
如果已从基本解析器中包含,则不在解析器的 __start 修饰符中添加斜杠。
7.0.3 (2023-02-08)
添加多字段功能,可以将mutlifields参数传递给index_field。当需要以不同方式索引同一字段时很有用。
7.0.2 (2022-11-23)
能够使用规范化器构建映射属性 [nilbacardit26]
7.0.1 (2022-10-28)
修复当full=True和reindex_security=True时的潜在索引错误 [masipcat]
能够使用分析器构建映射属性 [nilbacardit26]
7.0.0 (2022-03-16)
适配guillotina_elasticserach代码以适应guillotina 6.4的重大变更 [masipcat]
7.0.0a7 (2021-09-14)
修复guillotina_elasticserach 7.0.0a6不再自动加载目录的问题 [masipcat]
7.0.0a6 (2021-09-13)
[重大变更] 移除“子索引”逻辑 [masipcat]
对ElasticSearchUtility进行微小更改 [masipcat]
移除已废弃的参数‘doc_type’ [masipcat]
ElasticSearchUtility:移除了过时的方法get_by_uuid(),get_by_uuids(),get_by_type()和get_by_type() [masipcat]
ElasticSearchUtility:移除了未使用的内部方法_get_type_query() [masipcat]
解决在具有相同路径开头的上下文中搜索时的错误。例如:/container/folder/type_one和/container/folder/type。 [nilbacardit26]
增加等待ES docker容器最大时间的限制。当使用xdist和多线程传递测试时很有用。 [nilbacardit26]
7.0.0a5 (2021-07-30)
修改解析器,使其能够将__or字段解析为元素列表。例如:catalog_utility.search({"type_name__or": ["Folder", "Item"]}) [nilbacardit26]
7.0.0a4 (2021-07-15)
在解析器中添加路径作为通配符。将使用端点@search在相同上下文中执行搜索。注意:如果未指定深度,则查询将解析大于或等于上下文内容深度的查询加一 [nilbacardit26]
7.0.0a3 (2021-06-22)
修复日期解析器。使用默认格式strict_date_optional_time而不是使用epoch_millis,这会导致错误:无法解析日期字段[1.624173663E9]。
7.0.0a2 (2021-06-09)
在解析器中添加__or。这样我们就可以使用或运算符查询关键词,例如:type_name=Item&__or=id=foo_item&id=foo_item2 [nilbacardit26]
7.0.0a1 (2021-06-04)
向search_raw添加无限制参数,以便以root身份进行搜索 [nilbacardit26]
7.0.0a0 (2021-05-03)
将aioelasticsearch替换为elasticsearchpy [masipcat]
停止支持Elasticsearch 6.x [masipcat]
6.0.3 (2021-04-30)
禁用动态映射(如v3.x中那样) [masipcat]
修复迁移取消时tm为None的问题 [masipcat]
6.0.2 (2021-04-21)
允许在上下文对象上进行搜索 [bloodbare]
修复测试未通过的问题 [masipcat]
6.0.1 (2021-03-02)
在Parser的__call__中将_from替换为from [nilbacardit26]
6.0.0 (2020-07-10)
修改es_requester测试用例,使其仅清理与‘index_name_prefix’匹配的索引
6.0.0a2 (2020-05-12)
支持es6和es7 [lferran]
添加github actions并移除travis [lferran]
添加设置‘refresh’ [masipcat]
检查代码格式 [acatlla]
6.0.0a1 (2020-03-25)
将默认设置定义移动到函数default_settings()中 [masipcat]
6.0.0a0 (2020-03-12)
支持Guillotina 6 [masipcat]
支持Elasticsearch 7.0 [jordic]
确保在ES中保存子索引更改 [vangheem]
修复默认索引设置 [vangheem]
将aioelasticsearch锁定在<0.6.0 [masipcat]
能够导入类型 [vangheem]
在删除查询时重试冲突错误
注意pg中的废置对象
修复使用缺失属性self.request的命令
ISecurityInfo可以是异步的
修复在Elasticsearch中未遍历所有内容索引的错误 [vangheem]
build_security_query():将‘query.bool.filter’更改为使用列表而不是单个对象 [masipcat]
修复发布
在执行真空操作时缺少pg连接锁 [vangheem]
在可能的情况下,在索引进度时传递请求
修复发布
在真空操作中不需要请求对象 [vangheem]
G5支持 [vangheem]
在创建/删除时不要关闭索引 [vangheem]
在真空操作中处理另一个索引未找到错误 [vangheem]
日志记录 [vangheem]
处理索引未找到错误 [vangheem]
5.0.0 (2019-10-21)
最终
5.0.0a3 (2019-10-21)
更多的G5修复
5.0.0a2 (2019-06-21)
添加解析器以与g5自动解析一起工作
在结果结果中使用@id而不是@absolute_url
5.0.0a1 (2019-06-19)
仅支持Elasticsearch 7
我们可能希望将aioelasticsearch的新版本锁定,同时它也支持ES7: https://github.com/aio-libs/aioelasticsearch/pull/165
在实用程序初始化时检查支持的ES版本
验证索引名称不包含‘:’字符
[lferran]
3.4.0 (2019-05-28)
支持Elasticsearch 7 [bloodbare]
3.3.1 (2019-05-20)
在真空操作中处理ModuleNotFoundError错误 [vangheem]
3.3.0 (2019-04-10)
能够自定义创建ES连接对象的方式 [vangheem]
默认不加载工具,避免未配置工具时崩溃 [bloodbare]
支持OpenDistro [vangheem]
3.2.6 (2019-02-18)
确保在真空操作中使用事务锁 [vangheem]
3.2.5 (2019-02-08)
通过自定义elasticsearch[“security_query_builder”]设置来自定义安全查询。 [vangheem]
3.2.4 (2019-02-05)
在结果中包含高亮内容 [vangheem]
3.2.3 (2019-01-31)
将‘creation_date’,‘modification_date’,‘tags’添加到存储字段 [vangheem]
记录索引错误 [vangheem]
3.2.2 (2019-01-26)
以更智能的方式解决映射冲突,允许插件覆盖基础包/guillotina [vangheem]
3.2.1 (2019-01-25)
真空操作应与自定义的pg表名一起工作 [vangheem]
使用游标遍历数据 [vangheem]
3.2.0 (2018-12-12)
将Migrator和Reindexer中的kw参数cache=True添加到以选择是否覆盖txn._cache [masipcat]
防止多个索引字段定义不同的映射 [masipcat]
删除使用clear_conn_statement_cache [vangheem]
3.1.0 (2018-11-20)
升级到guillotina >= 4.3.0 [vangheem]
修复对象尚未存在于索引中的索引问题 [vangheem]
修复真空操作中的tid检查 [vangheem]
3.0.26 (2018-07-19)
guillotina.async在python 3.7中是语法错误 [vangheem]
不要在CREATE_INDEX时失败
3.0.25 (2018-06-18)
如果tid不在数据中,则不要重新处理 [vangheem]
重试冲突错误和线程池超过错误 [vangheem]
3.0.24 (2018-06-13)
添加pg索引以加快真空操作速度 [vangheem]
3.0.23 (2018-06-11)
在真空操作中处理TypeError [vangheem]
3.0.22 (2018-06-08)
升级真空命令以处理未正确重新索引的移动内容 [vangheem]
3.0.21 (2018-06-07)
修复与guillotina 4的兼容性 [vangheem]
3.0.20 (2018-05-31)
修复最后一个问题
3.0.19 (2018-05-31)
利用ignore_unavailable对Elasticsearch查询进行操作 [vangheem]
3.0.18 (2018-05-30)
在迁移数据时也处理ModuleNotFoundError [vangheem]
3.0.17 (2018-05-29)
处理现有索引不存在时的运行迁移 [vangheem]
在写入之前确保刷新对象 [vangheem]
3.0.16 (2018-05-29)
引发QueryErrorException而不是返回它 [vangheem]
3.0.15 (2018-05-25)
修复update_by_query索引参数 [vangheem]
3.0.14 (2018-05-25)
能够为update_by_query提供上下文 [vangheem]
3.0.13 (2018-05-25)
修复使用子索引的真空操作 [vangheem]
3.0.12 (2018-05-24)
更好地处理列表字段中的format_hit处理 [vangheem]
3.0.11 (2018-05-24)
提供format_hit实用程序 [vangheem]
3.0.10 (2018-05-23)
添加更多存储字段 [vangheem]
3.0.9 (2018-05-23)
为某些Elasticsearch操作添加回退 [vangheem]
3.0.8 (2018-05-22)
使IIndexManager.get_schemas异步 [vangheem]
3.0.7 (2018-05-21)
处理缺失的__parent__ [vangheem]
3.0.6 (2018-05-21)
修复重新索引子索引子项的安全问题 [vangheem]
3.0.5 (2018-05-21)
修复发布问题 [vangheem]
3.0.4 (2018-05-21)
cleanup_es接受一个前缀值 [vangheem]
3.0.3 (2018-05-21)
提供get_index_for实用程序 [vangheem]
提供cleanup_es测试实用程序 [vangheem]
修复在子索引上存储注释数据 [vangheem]
get_by_path应接受索引参数 [vangheem]
3.0.2 (2018-05-21)
修复发布问题 [vangheem]
添加utils.get_all_indexes_identifier [vangheem]
3.0.1 (2018-05-21)
使用mappings/indexes创建索引而不是在创建后更新它们 [vangheem]
添加es-fields命令以检查配置的字段 [vangheem]
3.0.0 (2018-05-19)
添加对子索引的支持 [vangheem]
引发异常而不是返回ErrorResponse [vangheem]
将滚动支持添加到查询 [gitcarbs]
2.0.1 (2018-05-10)
为迁移添加更多日志 [vangheem]
添加IIndexProgress到重新索引过程钩子
添加重新索引开始时的新事件。
IIndexProgress事件添加了上下文 [jordic]
2.0.0 (2018-05-06)
将aioes(不支持)替换为aioelasticsearch [vangheem]
Elasticsearch 6兼容性。 [vangheem]
1.3.13 (2018-05-02)
像源结果一样格式化存储字段结果 [vangheem]
1.3.12 (2018-05-01)
更多真空改进
1.3.11 (2018-04-30)
更多真空改进 [vangheem]
1.3.10 (2018-04-30)
迁移脚本不应使用事务 [vangheem]
1.3.9 (2018-04-30)
优化真空脚本以使用 tid 排序,这应该可以防止需要浏览大量文档来完成真空检查 [vangheem]
1.3.8 (2018-04-27)
在结果中提供 @name [vangheem]
1.3.7 (2018-04-26)
将搜索结果中的 @id 更改为 @uid [vangheem]
添加对分析字符过滤器的支持 [gitcarbs]
1.3.6 (2018-04-18)
与 store=true 映射一起工作 [vangheem]
1.3.5 (2018-04-15)
为 es 真空命令使用更小的批量大小 [vangheem]
1.3.4 (2018-04-15)
真空时的某些性能修复 [vangheem]
1.3.3 (2018-04-14)
在结果中提供配置文件数据 [gitcarbs]
1.3.2 (2018-04-03)
将测试升级到使用 pytest-docker-fixtures [vangheem]
1.3.1 (2018-03-14)
注意 index_data 配置 [vangheem]
1.3.0 (2018-03-14)
升级以支持 guillotina 2.4.x [vangheem]
1.2.11 (2018-03-09)
实现语句缓存清除 [vangheem]
1.2.10 (2018-03-02)
真空时不要使用缓存语句 [vangheem]
1.2.9 (2018-02-07)
处理 es 真空时解冻对象时出现的错误 [vangheem]
1.2.8 (2018-01-11)
确保更改命令的事务策略 [vangheem]
1.2.7 (2018-01-08)
确保在命令中关闭连接 [vangheem]
1.2.6 (2017-12-18)
使用 traverse 而不是 do_traverse [vangheem]
1.2.5 (2017-12-08)
更新时在冲突情况下重试 [vangheem]
1.2.4 (2017-12-06)
使用 futures 而不是 threads 进行迁移 [vangheem]
1.2.3 (2017-11-21)
使用最新的 guillotina 升级测试基础设施 [vangheem]
1.2.2 (2017-11-08)
修复 Jenkins 上的测试设置 [vangheem]
1.2.1 (2017-11-08)
使日志不那么嘈杂 [vangheem]
1.2.0 (2017-11-06)
升级到 guillotina 2.0.0 [vangheem]
1.1.24 (2017-10-12)
在真空命令完成后关闭连接 [vangheem]
1.1.23 (2017-10-09)
确保在手动调用使用会话对象的 Elasticsearch API 时使用 async with 语法 [vangheem]
1.1.22 (2017-09-28)
对运行迁移时缺失的索引进行另一项调整 [vangheem]
1.1.21 (2017-09-21)
所有索引/删除操作已经在 future 中,因此无需将 future 添加到操作中 [vangheem]
1.1.20 (2017-09-21)
使用最新的 guillotina futures 请求 API [vangheem]
1.1.19 (2017-09-14)
更改 esvacuum 的页面大小和滚动以防止超时 [vangheem]
1.1.18 (2017-08-22)
修复在迁移期间编辑注册表时发生的 TIDConflictError [vangheem]
1.1.17 (2017-08-11)
更好地处理迁移时映射更改导致的缺失类型 [vangheem]
1.1.16 (2017-08-09)
搜索结果应返回排序值 [gitcarbs]
1.1.15 (2017-07-28)
修复真空时迭代所有键时出现的空滚动错误 [vangheem]
1.1.14 (2017-07-21)
修复迁移活动时的死锁问题 [vangheem]
1.1.13 (2017-07-12)
在运行迁移之前等待一段时间,以便使用异步计算动态类型的插件可以加载
1.1.12 (2017-07-12)
修复升级映射时文档类型缺失的场景 [vangheem]
1.1.11 (2017-07-10)
添加 update_by_query 方法 [vangheem]
1.1.10 (2017-07-06)
添加 reindex 命令 [vangheem]
1.1.9 (2017-07-06)
修复迁移脚本中的无效导入 [vangheem]
1.1.8 (2017-07-05)
为真空添加更多日志 [vangheem]
1.1.7 (2017-06-29)
添加真空命令 [vangheem]
1.1.6 (2017-06-23)
修复组查询,以防止在安全查询中为组预先附加 'group:' [vangheem]
1.1.5 (2017-06-21)
修复在迁移时对象被删除的情况,这些对象被认为是孤立的 [vangheem]
1.1.4 (2017-06-20)
防止自动映射元数据 [bloodbare]
1.1.3 (2017-06-15)
修复重新索引 [vangheem]
1.1.2 (2017-06-15)
修复客户端异常 aiohttp 错误的导入 [vangheem]
1.1.1 (2017-06-09)
将 fixtures 从 conftest.py 移出,放入自己的模块。这可能会破坏依赖于它的测试![vangheem]
1.1.0 (2017-06-09)
添加 Reindexer 工具,专门用于重新索引,而不是使用 migrator [vangheem]
1.0.29 (2017-06-08)
在比较之前清理映射,以防止检测映射差异时的误报 [vangheem]
1.0.28 (2017-06-08)
能够仅迁移映射并跳过网站上内容的处理 [vangheem]
1.0.27 (2017-06-07)
确保在调用 reindex_all_content 时刷新重新索引的项目 [vangheem]
1.0.26 (2017-05-26)
在构建查询时添加组时,确保为每个组预先附加“group:”,这样我们就可以区分组和用户,并且可以避免他们添加一个他们是成员的“root”组 [vangheem]
1.0.25 (2017-05-26)
处理你在重新索引时数据正在变化的问题 [vangheem]
1.0.24 (2017-05-26)
修复原始索引有问题时会导致索引差异计算错误的问题 [vangheem]
修复在新索引上翻转之前发生的迁移失败问题 [vangheem]
1.0.23 (2017-05-25)
修复安全更改时的重新索引问题 [vangheem]
1.0.22 (2017-05-19)
能够取消迁移并执行一些清理操作 [vangheem]
1.0.21 (2017-05-19)
一系列迁移修复以提高其鲁棒性 [vangheem]
1.0.20 (2017-05-18)
实现实时迁移命令 [vangheem]
1.0.19 (2017-05-16)
使用清洁选项重新索引应删除,重新创建索引 [vangheem]
1.0.18 (2017-05-16)
对所有请求类型使用虚拟缓存进行重新索引 [vangheem]
1.0.17 (2017-05-16)
在重新索引时禁用缓存 [vangheem]
1.0.16 (2017-05-15)
在Elasticsearch上进行批量索引时使用线程,以确保Elasticsearch始终保持忙碌状态。 [vangheem]
强制更新映射 [bloodbare]
1.0.15 (2017-05-12)
关闭和打开索引以定义设置 [bloodbare]
1.0.14 (2017-05-12)
启用按类型查询的大小 [bloodbare]
1.0.13 (2017-05-11)
也在强制映射上设置设置 [bloodare]
1.0.12 (2017-05-11)
将权限名称更改为guillotina [bloodbare]
1.0.11 (2017-05-11)
在映射突变的情况下,有选项设置映射而不重新索引 [bloodbare]
1.0.10 (2017-05-09)
修复 –update-missing 参数与 es-reindex 命令 [vangheem]
1.0.9 (2017-05-09)
修复删除节点时的错误 [bloodbare]
1.0.8 (2017-05-08)
通过使用asyncio.gather遍历子树并同时索引来提高布什内容重新索引的性能。 [vangheem]
改进重新索引命令的选项 [vangheem]
1.0.7 (2017-05-04)
reindex_all_content现在接受update和update_missing参数 [vangheem]
1.0.6 (2017-05-03)
能够从现有的重新索引中更新 [vangheem]
1.0.5 (2017-05-02)
需要避免在重新索引时使用长时间运行的查询,因为对于非常大的文件夹,它们可能会超时 [vangheem]
1.0.4 (2017-05-02)
进一步优化重新索引 [vangheem]
1.0.3 (2017-05-02)
更内存高效的重新索引 [vangheem]
1.0.2 (2017-05-02)
修复重新索引内容 [vangheem]
1.0.1 (2017-04-25)
提供异步实用程序,因为它允许我们在对象销毁时关闭连接 [vangheem]
1.0.0 (2017-04-24)
初始版本
项目详细信息
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
guillotina_elasticsearch-8.0.6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9474ac8805fd9751f8dc4a9df9ef25b97bc3aa1eb2f90d5770a2e6e08e0f641a |
|
MD5 | 845d09d9edd83894c5d42e32b005a957 |
|
BLAKE2b-256 | e3e39fb5edb5868663ce2bcefa92c691c207b34575b4d99758cc7ce6f6e4d00f |