Plone搜索集成:用于在Open-/ElasticSearch中索引内容的插件
项目描述
Plone 内容的 OpenSearch 或 ElasticSearch 集成。
它包括以下部分
索引器将内容传递给一个独立运行的 collective.elastic.ingest 服务。
目录索引作为 Open-/ElasticSearch 的代理,与 ZCatalog 集成。即用作 SearchableText 索引的替代。
为 plone.restapi 定制的插件,为摄取服务提供结构信息
REST API 端点 @kitsearch 接受 Open-/ElasticSearch 查询,返回带有 Plone 权限检查的结果。
安装
先决条件
您需要一个正在运行的 collective.elastic.ingest (版本 2.x) 服务。这暗示有一个正在运行的 Redis 实例和一个正在运行的 Open- 或 ElasticSearch 实例。
mxdev/mxmake
将 collective.elastic.plone[redis,opensearch]>=2.0.0b11 添加到您的 requirements.txt 中(或者使用 constraints.txt 进行版本锁定)。
额外的需求是用于队列服务器和索引服务器的需求,可能不同,见下文。或者将其添加到您的 pyproject.toml 作为依赖项(或者对于旧代码到 setup.[py|cfg])。
在 Plone 启动前,在您的后端目录中提供并 源 一个环境变量文件(例如 .env)。
export INDEX_SERVER=localhost:9200 export INDEX_USE_SSL=1 export INDEX_OPENSEARCH=1 export INDEX_LOGIN=admin export INDEX_PASSWORD=admin export INDEX_NAME=plone export CELERY_BROKER=redis://127.0.0.1:6379/0
Buildout
通过将其添加到 buildout 来安装 collective.elastic.plone[redis,opensearch]。额外的需求是用于队列服务器和索引服务器的需求可能不同,见下文。环境也可能不同。也请参见下文。
[buildout] # ... eggs = # ... collective.elastic.plone[redis,opensearch] environment-vars += INDEX_SERVER=localhost:9200 INDEX_USE_SSL=1 INDEX_OPENSEARCH=1 INDEX_LOGIN=admin INDEX_PASSWORD=admin INDEX_NAME=plone CELERY_BROKER=redis://127.0.0.1:6379/0 [versions] collective.elastic.plone = 2.0.0
然后运行 bin/buildout
额外需求
根据使用的队列服务器和索引服务器,额外的需求可能不同
队列服务器: redis 或 rabbitmq。
索引服务器: opensearch 或 elasticsearch。
启动后
启动后,您需要通过 Addons 控制面板在 Plone 中安装插件。这用代理索引替换了 SearchableText 索引,并具有最小配置。最好是根据项目需求更改配置。
要将所有内容索引到目录中,请将 /@@update-index-server-index 添加到您的 Plone 网站的 URL。这将所有内容排队索引到 ElasticSearch(但不在 ZCatalog 中)。或者,重新索引目录(在 ZMI 的高级选项卡下)也行。
新内容或修改后的内容会自动排队索引。
Volto 前端
代理索引在 Volto 中开箱即用。
然而,在 Volto 中,可以通过使用 @kitsearch 端点进行直接(并且更快)的搜索,绕过目录。该端点接受原生的 Open-/ElasticSearch 查询,并返回带有 Plone 权限检查的结果。
Volto 扩展插件 volto-searchkit-block 使用此端点提供了一个可配置的块。
备注:出于安全原因,在 collective.elastic.plone 2.0.0 中,@kitsearch 端点始终使用环境配置的值覆盖任何“API URL”和“API 索引”设置。
配置
全局配置通过环境变量完成。
每个目录代理索引都有自己的 JSON 配置。
环境
环境变量是
- INDEX_SERVER
ElasticSearch 或 OpenSearch 服务器的 URL。
默认:localhost:9200
- INDEX_NAME
在ElasticSearch或OpenSearch服务中使用的索引名称。
默认值:plone
- INDEX_USE_SSL
是否使用安全连接。
默认值:0
- INDEX_OPENSEARCH
是否使用OpenSearch或ElasticSearch。
默认值:1
- INDEX_LOGIN
ElasticSearch 8+或OpenSearch 2服务器的用户名。对于Plone插件,读权限就足够了。
默认值:admin
- INDEX_PASSWORD
上述用户的密码
默认值:admin
- CELERY_BROKER
Celery的代理URL。有关详细信息,请参阅docs.celeryq.dev。
默认值:redis://127.0.0.1:6379/0
代理索引
通过网页,可以在Zope管理界面(ZMI)下的portal_catalog中配置proxy-index,然后点击ElasticSearchProxyIndex(即SearchableText)。
在文件系统中,可以通过使用GenericSetup配置文件和将catalog.xml文件放入其中来配置,就像在portal_catalog工具中配置任何其他索引一样。
<index meta_type="ElasticSearchProxyIndex"
name="SearchableText"
>
<querytemplate>
{
"query": {
"multi_match": {
"query": "{{keys[0]}}",
"fields": [
"title*^1.9",
"description*^1.5",
"text.data*^1.2",
"blocks_plaintext*^1.2"
"file__extracted.content*"
],
"analyzer": "{{analyzer}}","operator": "or",
"fuzziness": "AUTO",
"prefix_length": 1,
"type": "most_fields",
"minimum_should_match": "75%"
}
}
}
</querytemplate>
</index>
它使用Jinja2模板将搜索词注入查询。可用的变量有
- keys
一个搜索词列表,通常只有一个。
- language
门户的当前语言。
- analyzer
基于语言的查询分析器的名称。目前这是硬编码的。如果没有为语言提供分析器,则使用standard分析器。
生成的查询需要是一个有效的OpenSearch Query DSL或ElasticSearch Query DSL文本。
源代码
源代码存储在GIT版本控制系统中,主要分支位于github。你可以在那里报告问题。
我们很高兴看到许多分叉和pull-requests来使此插件变得更好。
维护者是Jens Klein、Peter Holzer和BlueDynamics Alliance开发团队。我们感谢任何贡献,如果需要在PyPI上发布版本,请与我们中的任何一位联系。如果需要任何培训、辅导、集成或修改,我们还提供商业支持。
使用Github Release功能和PyPI受信任的发布来发布版本。绝不要使用不同的发布流程!如有疑问,请咨询Jens。
贡献
想法和测试:Peter Holzer
初始概念和代码:Jens W. Klein(Github: @jensens)
贡献者
Katja Süss(Github: @ksuess)
许可证
该项目采用GPLv2许可。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。
源代码分发
构建版本
collective_elastic_plone-2.1.1.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1e132a3796a769f2bab18792eba01f4319a8170be6a13d6b397058b46f8b3beb |
|
MD5 | cc5100616810db7e3470b54ac75a3eaa |
|
BLAKE2b-256 | 1590d5ec2b394a9b0bc72f4d8060def14586f88f68f5c5b86cc4c1cc64c8d7e8 |
collective.elastic.plone-2.1.1-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f7d3c59e63ab6c8d91c2e3bb8b4b440e0bcb789ec82012648dc0e09aac83c9e2 |
|
MD5 | 4ab1abff6fb1c8b7f602df738c79ebca |
|
BLAKE2b-256 | 037a07a97b5ac63f92d7381a499dd0127aac895fd30ba9855ba00704b9b54cde |