PHPackages                             lvinkim/elasticsearch-odm - 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. lvinkim/elasticsearch-odm

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

lvinkim/elasticsearch-odm
=========================

v0.1.6(7y ago)12751PHPPHP &gt;=7.1

Since Aug 9Pushed 7y ago1 watchersCompare

[ Source](https://github.com/lvinkim/elasticsearch-odm)[ Packagist](https://packagist.org/packages/lvinkim/elasticsearch-odm)[ RSS](/packages/lvinkim-elasticsearch-odm/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (3)Versions (8)Used By (1)

elasticsearch-odm
=================

[](#elasticsearch-odm)

> 支持版本
> 6.0 以上

### 安装

[](#安装)

```
$ composer require lvinkim/elasticsearch-odm

```

### 方法概述

[](#方法概述)

#### 索引管理方法

[](#索引管理方法)

- 初始化索引: initialIndex()
- 更新索引别名: updateAliases($newIndexName)
- 删除索引: deleteIndex()

#### 文档管理方法

[](#文档管理方法)

- 通过 ID 获取单个 Entity 的方法：findOneById($id)
- 通过 $query 获取单个 Entity 的方法：findOne($query)
- 通过 $query 获取多个 Entity 的方法：findMany($query, ...)
- 删除单个 Entity 的方法：deleteOne($entity)
- 插入或更新单个 Entity 的方法：upsertOne($entity)
- 插入或更新多个 Entity 的方法：upsertMany($entities)

### 使用说明:

[](#使用说明)

```
use Lvinkim\ElasticSearchODM\Annotations as ODM;

/**
 * Class User
 * @ODM\Entity()
 */
class User
{
    /**
     * @var string
     * @ODM\Id
     */
    private $id;

    /**
     * @var int
     * @ODM\Field(property="integer")
     */
    private $age;

    /**
     * @return string
     */
    public function getId(): string
    {
        return $this->id;
    }

    /**
     * @param string $id
     */
    public function setId(string $id): void
    {
        $this->id = $id;
    }

    /**
     * @return int
     */
    public function getAge(): int
    {
        return $this->age;
    }

    /**
     * @param int $age
     */
    public function setAge(int $age): void
    {
        $this->age = $age;
    }
}
```

#### 步骤2. 定义 Repository 类

[](#步骤2-定义-repository-类)

```
use Lvinkim\ElasticSearchODM\Repository;

class UserRepository extends Repository
{

    /**
     * 返回索引名, 例如: db, access-log-*, ... 等
     * @return string
     */
    protected function getIndexName(): string
    {
        return 'unit-test';
    }

    /**
     * 返回文档 type , 例如: user, product, ... 等
     * @return string
     */
    protected function getTypeName(): string
    {
        return 'user';
    }

    /**
     * 返回数据表的对应实体类名
     * @return string
     */
    protected function getEntityClassName(): string
    {
        return User::class;
    }
}
```

#### 步骤3. 使用示例

[](#步骤3-使用示例)

```
use Lvinkim\ElasticSearchODM\DocumentManager;
use Elasticsearch\ClientBuilder;

$hosts = ['docker.for.mac.localhost:9200'];
$client = ClientBuilder::create()->setHosts($hosts)->build();

$documentManager = new DocumentManager($client);
$userRepository = $documentManager->getRepository(UserRepository::class);

// 创建索引

$userRepository->initialIndex();

// 插入文档
$user = new User();
$user->setAge(18);
$userRepository->insertOne($user);

// 更多方法.... 参见 Functional/RepositoryTest.php 的各用例
```

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity52

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 ~28 days

Recently: every ~41 days

Total

7

Last Release

2666d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/01d0ca591c3a6b31fb49935eb9ef6c2556ac5f1d44057d207fd06a5316b45457?d=identicon)[lvinkim](/maintainers/lvinkim)

---

Top Contributors

[![xiyanghui](https://avatars.githubusercontent.com/u/32087026?v=4)](https://github.com/xiyanghui "xiyanghui (8 commits)")

---

Tags

elasticsearchodmphp7

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/lvinkim-elasticsearch-odm/health.svg)

```
[![Health](https://phpackages.com/badges/lvinkim-elasticsearch-odm/health.svg)](https://phpackages.com/packages/lvinkim-elasticsearch-odm)
```

###  Alternatives

[ruflin/elastica

Elasticsearch Client

2.3k50.4M203](/packages/ruflin-elastica)[mailerlite/laravel-elasticsearch

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

934529.3k2](/packages/mailerlite-laravel-elasticsearch)[ongr/elasticsearch-dsl

Elasticsearch DSL library

46411.9M45](/packages/ongr-elasticsearch-dsl)[matchish/laravel-scout-elasticsearch

Search among multiple models with ElasticSearch and Laravel Scout

7431.6M2](/packages/matchish-laravel-scout-elasticsearch)[ongr/elasticsearch-bundle

Elasticsearch bundle for Symfony.

3151.1M15](/packages/ongr-elasticsearch-bundle)[jeroen-g/explorer

Next-gen Elasticsearch driver for Laravel Scout.

397612.3k](/packages/jeroen-g-explorer)

PHPackages © 2026

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