PHPackages                             wgrape/esupdater - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. wgrape/esupdater

ActiveLibrary[Search &amp; Filtering](/categories/search)

wgrape/esupdater
================

A high-performance lightweight framework of PHP to achieve incremental update of ES documents.

v2.1.1(3y ago)212418[3 issues](https://github.com/WGrape/esupdater/issues)MITPHP

Since Jan 4Pushed 3y ago2 watchersCompare

[ Source](https://github.com/WGrape/esupdater)[ Packagist](https://packagist.org/packages/wgrape/esupdater)[ RSS](/packages/wgrape-esupdater/feed)WikiDiscussions v2.x Synced today

READMEChangelog (7)DependenciesVersions (7)Used By (0)

[![img](https://user-images.githubusercontent.com/35942268/147061994-f0d5a3ec-2d5f-4d72-af1c-139289547f25.png)](https://user-images.githubusercontent.com/35942268/147061994-f0d5a3ec-2d5f-4d72-af1c-139289547f25.png)

一个基于Canal实现ES文档增量更新的高性能轻量框架

 [![](https://camo.githubusercontent.com/d843b11122494970224bce3925e652fc192caaacb209eadac3530a178c1f0c45/68747470733a2f2f7777772e6f736373313032342e636f6d2f706c6174666f726d2f62616467652f5747726170652f6573757064617465722e7376673f73697a653d736d616c6c)](https://www.oscs1024.com/project/oscs/WGrape/esupdater?ref=badge_small) [![](https://camo.githubusercontent.com/ab97f46a1339ca1f1ccd713ad644e73b575ef4b9465f953565660114a181887f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d372e302b2d626c75652e737667)](https://camo.githubusercontent.com/ab97f46a1339ca1f1ccd713ad644e73b575ef4b9465f953565660114a181887f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d372e302b2d626c75652e737667) [![GitHub release (latest by date)](https://camo.githubusercontent.com/e2e5391adde4a13554fe0624e587774007fae02d58227ab68c2d724c0593642e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f7767726170652f657375706461746572)](https://camo.githubusercontent.com/e2e5391adde4a13554fe0624e587774007fae02d58227ab68c2d724c0593642e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f7767726170652f657375706461746572) [![](https://camo.githubusercontent.com/84e366dbc0f179ea064f8d3f460282ad463c527c4ad38ca3f69f3474043e0a70/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d322e782d626c75652e737667)](https://camo.githubusercontent.com/84e366dbc0f179ea064f8d3f460282ad463c527c4ad38ca3f69f3474043e0a70/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d322e782d626c75652e737667) [![Docker Pulls](https://camo.githubusercontent.com/47b074e0bd5ae179089f9dad3e0400c3d9fe1f68a791b7c2313a187ce90dcefa/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f6c767369642f7068706b61666b61)](https://camo.githubusercontent.com/47b074e0bd5ae179089f9dad3e0400c3d9fe1f68a791b7c2313a187ce90dcefa/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f6c767369642f7068706b61666b61) [![](https://camo.githubusercontent.com/43663e936ebe71c306555b3295d974cf67477cbac55a71f7978dbc30b2d0d800/68747470733a2f2f6170702e7472617669732d63692e636f6d2f5747726170652f6573757064617465722e7376673f6272616e63683d6d6173746572)](https://app.travis-ci.com/github/WGrape/esupdater) [![](https://camo.githubusercontent.com/4e64b2f87be736515767f2d3fbd9324ec0d1ac875c9b798d192f7cd145bcdddb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f756e69746573742d3130302532352d79656c6c6f772e737667)](https://wgrape.github.io/esupdater/report.html) [![](https://camo.githubusercontent.com/8bb50fd2278f18fc326bf71f6e88ca8f884f72f179d3e555e20ed30157190d0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e2e737667)](LICENSE) [![](https://camo.githubusercontent.com/f7943eddd6ba92944cc7d3b554d5e887ffca142f9f1bf426fa2bf015a0ef0acd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f632de4b8ade696872d7265642e737667)](doc/HOWTOCODE.md)

- [一、介绍](#1)
- [1、轻量级框架](#11)
- [2、全面容器化](#12)
- [3、事件驱动化](#13)
- [4、插件化扩展](#14)
- [5、高性能消费](#15)
- [二、快速上手](#2)
- [三、业务接入](#3)
- [四、扩展列表](#4)
- [五、关于项目](#5)
- [1、深入了解](#51)
- [2、欢迎参与](#52)
- [六、贡献列表](#6)

一、介绍
----

[](#一介绍)

ESUpdater是一个基于Canal实现ES文档增量更新的高性能轻量框架。基于以下优势，可以让你快速上手和使用。

[![Architecture](https://user-images.githubusercontent.com/35942268/145793762-a23899d6-c162-4527-ae72-643edc80bb18.png)](https://user-images.githubusercontent.com/35942268/145793762-a23899d6-c162-4527-ae72-643edc80bb18.png)

### 1、轻量级框架

[](#1轻量级框架)

无论安装使用，还是代码设计，整个框架都非常轻量，优雅的完成数据二次处理和ES增量更新。

### 2、全面容器化

[](#2全面容器化)

为解决各种依赖安装的复杂麻烦问题，已实现全面容器化，只需一条命令就可以轻松安装、部署、和维护。

### 3、事件驱动化

[](#3事件驱动化)

基于框架内部的事件驱动设计，可以轻松地注册不同数据表的变更事件和回调，优雅地实现增量更新。

### 4、插件化扩展

[](#4插件化扩展)

在不影响框架内部运行的前提下，支持插件化扩展，实现对内部行为的自定义扩展。

### 5、高性能消费

[](#5高性能消费)

通过一个`Consumer`进程和多个`Worker`进程的一对多通信模型，最少提高10倍的吞吐量，实现高性能消费。

二、快速上手
------

[](#二快速上手)

> 预计只需要 **3分钟** 即可完成 ！

以下操作中会依赖Docker，所以请先安装并启动它。如果只是试用则强烈建议你全程使用[在线Docker网站](https://labs.play-with-docker.com/)，按如下步骤安装即可，非常方便。

### 1、获取项目

[](#1获取项目)

通过`git clone`或下载Release包即可获取项目，如果出错请参考[获取过程帮助](doc/HELP.md#12)文档。

```
git clone https://github.com/WGrape/esupdater
cd esupdater
```

### 2、开始安装

[](#2开始安装)

执行`install`目录下的`install.sh`安装脚本时，需要传递如下参数以实现[设置环境变量](./doc/APPLICATION.md#3)。如果出错请参考[安装过程帮助](doc/HELP.md#13)文档。

- `your_local_ip` ：本机IP参数，通过`ifconfig`查看，通常为192.168开头，而不是127.0.0.1

```
cd install
bash install.sh ${your_local_ip}
cd ..
```

### 3、运行项目

[](#3运行项目)

安装成功后，执行根目录下的`start.sh`启动脚本即可。如果出错请参考[运行过程帮助](doc/HELP.md#3)文档。

```
bash start.sh

# 查看日志输出
tail -f /home/log/esupdater/debug.log.20220111
```

### 4、测试运行

[](#4测试运行)

在另一个窗口进入`kafkaContainer`容器中，按如下操作启动`Kafka生产者`

```
docker exec -it kafkaContainer /bin/bash
cd /opt/kafka/

# 启动时可能会出现warn, 忽略即可
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic default_topic
```

[![img1](https://user-images.githubusercontent.com/35942268/148804272-b00483a9-3861-4aab-8b2f-aee963784694.png)](https://user-images.githubusercontent.com/35942268/148804272-b00483a9-3861-4aab-8b2f-aee963784694.png)

启动成功后会进入一个生产消息的命令行，发送任意消息后，查看上一步日志中的输出，如果出现如下类似日志则说明服务已经成功运行 ！

[![img2](https://user-images.githubusercontent.com/35942268/148806227-25af15b9-5609-4de3-ac13-96fc83c7c99b.png)](https://user-images.githubusercontent.com/35942268/148806227-25af15b9-5609-4de3-ac13-96fc83c7c99b.png)

三、业务接入
------

[](#三业务接入)

如果需要在你的业务中接入此项目，请参考[应用接入文档](./doc/APPLICATION.md)。

四、扩展列表
------

[](#四扩展列表)

基于插件化扩展开发，项目提供了一系列开箱即用的扩展。

### 1、AutoGenerateCallback

[](#1autogeneratecallback)

一个自动生成`Handler`和`Service`的事件回调模块的扩展。具体使用见[使用介绍](./plugin/autogeneratecallback/README.md)

五、关于项目
------

[](#五关于项目)

### 1、深入了解

[](#1深入了解)

如果想要深入了解本项目，在 [doc目录](./doc) 下提供了如下丰富完善的项目文档，欢迎阅读。

- [APPLICATION](doc/APPLICATION.md) ：帮助你快速在业务中接入此项目
- [HOWTOCODE](doc/HOWTOCODE.md) ：更深的了解项目，包括架构设计、底层原理
- [HELP](doc/HELP.md) ：解决安装和部署过程中问题的帮助手册，包括镜像制作帮助、容器部署帮助等

### 2、参与项目

[](#2参与项目)

项目源码设计简单易懂，如有更好的想法，可参考[如何贡献](doc/CONTRIBUTING.md)文档，期待提出宝贵的 [Pull request](https://github.com/WGrape/esupdater/pulls) 。

如果在了解和使用过程中，有任何疑问，也欢迎提出宝贵的 [Issue](https://github.com/WGrape/esupdater/issues/new) 。

开源不易，如果支持本项目 **欢迎Star ！** 以激励维护和更新的动力。

六、贡献列表
------

[](#六贡献列表)

所有对本项目有过重要贡献的用户，会收录在此贡献者列表中。

- 感谢 [sick-cat](https://github.com/sick-cat) 提出的Issue ：[启动配置](https://github.com/WGrape/esupdater/issues/41)
- 感谢 [onser3](https://github.com/onser3) 提出的Issue ：[自动生成handler和service层](https://github.com/WGrape/esupdater/issues/44)

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity22

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~75 days

Recently: every ~94 days

Total

6

Last Release

1209d ago

Major Versions

v1.1.0 → v2.0.0-beta2022-01-04

### Community

Maintainers

![](https://www.gravatar.com/avatar/2f02664654cce5347680ce67dd9e783b340593d1eb92420b3f1c79f949f5d618?d=identicon)[WGrape](/maintainers/WGrape)

---

Top Contributors

[![WGrape](https://avatars.githubusercontent.com/u/35942268?v=4)](https://github.com/WGrape "WGrape (45 commits)")

---

Tags

binlogcanalcomposerdockerelasticsearchesframeworkkafkamysqlphpphp7

### Embed Badge

![Health badge](/badges/wgrape-esupdater/health.svg)

```
[![Health](https://phpackages.com/badges/wgrape-esupdater/health.svg)](https://phpackages.com/packages/wgrape-esupdater)
```

###  Alternatives

[ruflin/elastica

Elasticsearch Client

2.3k50.4M202](/packages/ruflin-elastica)[opensearch-project/opensearch-php

PHP Client for OpenSearch

15024.3M65](/packages/opensearch-project-opensearch-php)[mailerlite/laravel-elasticsearch

An easy way to use the official PHP ElasticSearch client in your Laravel applications.

934529.3k2](/packages/mailerlite-laravel-elasticsearch)[massive/search-bundle

Massive Search Bundle

721.4M13](/packages/massive-search-bundle)[shyim/opensearch-php-dsl

OpenSearch/Elasticsearch DSL library

175.9M9](/packages/shyim-opensearch-php-dsl)[outl1ne/nova-multiselect-filter

Multiselect filter for Laravel Nova.

45802.7k3](/packages/outl1ne-nova-multiselect-filter)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
