blomstra/search
Composer 安装命令:
composer require blomstra/search
包简介
Replaces Flarum search with one powered by an elastic search server.
README 文档
README
Search replaces the native Flarum search functionality which relies on MySQL badly performing fulltext search with one that is completely relying on the proven elasticsearch engine.
Features
- Sync discussions and posts to Elasticsearch using your queue, unobtrusively for the user.
- Reduces search loading times to well below 400ms (local tests with 50,000 discussions: 260ms)
- Uses Flarum's group permissions and tags system.
- Compatible with Friends of Flarum Byōbu.
Requirements
- Elasticsearch 7.x or OpenSearch 1.x+
- A non-sync queue driver with a running worker (
php flarum queue:work) is strongly recommended for production. The extension works with the default sync driver, but index jobs run inline which adds latency to user-facing changes like posting.
Installation
composer require blomstra/search:*
Enable the extension in the admin area and configure the Elasticsearch endpoint and index name in the extension settings.
Setting up the index
First install
Run the build command once. It creates a timestamped concrete index, immediately aliases your configured index name to it, and begins queuing documents. Search is available and improves as the queue processes:
php flarum blomstra:search:index build php flarum queue:work
Subsequent rebuilds (zero-downtime)
When you need to rebuild the full index (e.g. after a mapping change):
# Simple rebuild — promotes automatically once all jobs are queued php flarum blomstra:search:index build # Or keep a backup of the old index in case you need to roll back php flarum blomstra:search:index build --keep-backup
After the queue drains, fill any gaps from content posted during the build:
php flarum blomstra:search:index fill
If you kept a backup and want to roll back:
php flarum blomstra:search:index rollback
Once satisfied with the new index, drop the backup:
php flarum blomstra:search:index discard --backup
Blue-green rebuild (manual promotion)
Use --staging to keep the old index live until you explicitly promote:
# 1. Build into a staging index — live index is untouched php flarum blomstra:search:index build --staging # 2. Drain the queue php flarum queue:work --stop-when-empty # 3. Promote the staging index to live php flarum blomstra:search:index promote # Or keep the old index as a backup: php flarum blomstra:search:index promote --keep-backup
Resuming or cancelling an interrupted build
If a build is interrupted, re-run it with the appropriate flag:
# Resume each seeder from where it left off php flarum blomstra:search:index build --resume # Drop the staging index and start completely fresh php flarum blomstra:search:index build --fresh # Cancel the build without starting a new one php flarum blomstra:search:index discard --pending
Filling gaps in an existing index
If documents are missing from the live index (e.g. due to queue failures):
php flarum blomstra:search:index fill
Updating the mapping only
To push a mapping change to the live index without rebuilding:
php flarum blomstra:search:index mapping
Command reference
| Command | Description |
|---|---|
build |
Rebuild the index and promote automatically once all jobs are queued. On first install, aliases immediately so search is live during seeding. |
build --keep-backup |
Rebuild and promote, retaining the old index as a backup for rollback. |
build --staging |
Build into a staging index without promoting — use promote when ready (blue-green workflow). |
build --resume |
Resume an interrupted build from where each seeder left off. |
build --fresh |
Drop the staging index and start completely fresh. |
promote |
Atomically swap the alias to the staging index. Prompts for confirmation (blue-green workflow). |
promote --keep-backup |
Promote and retain the replaced live index as a backup for rollback. |
rollback |
Restore the backup index to live. Deletes the index that was live. |
discard --pending |
Drop the staging index without promoting (cancels an in-progress build). |
discard --backup |
Drop the backup index (cleanup after --keep-backup). |
mapping |
Push updated mapping to the live index without rebuilding or reseeding. |
fill |
Seed only documents missing from the live index. |
build --only=discussions |
Seed only the specified document type (discussions or posts). |
build --throttle=N |
Wait N seconds between batches (reduces queue pressure). |
build --max-id=N |
Limit seeding to documents with ID ≤ N. |
promote --i-am-sure |
Skip the promotion confirmation prompt (for scripts and CI). |
FAQ
Queue configuration
"Can I dispatch indexing jobs to a specific queue?"
Yes:
\Blomstra\Search\Jobs\Job::$onQueue = 'search';
"I have a different question"
Reach out ot us via https://support.on-floxum.com/t/ext-search . If you have an active subscription, please mention what plan you are on.
- Floxum provides managed Flarum hosting.
- https://floxum.com
- https://support.on-floxum.com/t/ext-search
blomstra/search 适用场景与选型建议
blomstra/search 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.24k 次下载、GitHub Stars 达 12, 最近一次更新时间为 2021 年 11 月 01 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「search」 「extension」 「elasticsearch」 「elastic」 「fulltext」 「flarum」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 blomstra/search 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 blomstra/search 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 blomstra/search 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A Laravel package to retrieve data from Google Search Console
A custom URL rule class for Yii 2 which allows to create translated URL rules
Indexed Search Autocomplete - Extends the TYPO3 Core Extension Indexed_Search searchform with an autocomplete feature.
The Yii2 extension uses jQuery jquery.carousel-1.1.min.js and makes image carousel from php array of structure defined.
Abstraction Layer to index and search entities
simple api library.
统计信息
- 总下载量: 5.24k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 12
- 点击次数: 11
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-11-01