PHPackages                             elasticadapted/elasticadapted - 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. [API Development](/categories/api)
4. /
5. elasticadapted/elasticadapted

ActiveLibrary[API Development](/categories/api)

elasticadapted/elasticadapted
=============================

Elasticsearch-PHP lib adapted for Laminas

03PHP

Since Nov 7Pushed 3y ago1 watchersCompare

[ Source](https://github.com/nikolacuric/elasticadapted)[ Packagist](https://packagist.org/packages/elasticadapted/elasticadapted)[ RSS](/packages/elasticadapted-elasticadapted/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

This is library for simple elasticsearch usage

###### This library can do two main things:

[](#this-library-can-do-two-main-things)

1. retroactive indexing from your existing database and
2. partial indexing records, update, delete and finally search

For first part of functionality you have to make 'elasticadapted' directory under /data/ directory. In that directory you have to make two files: -`retroactiveIndexingConfig.php`-`doRetroactiveIndexing.php`In first file you have to provide configuration array respectively under variable name `$retroactiveIndexingConfig`. There are an example of that array:

```
$retroactiveIndexingConfig = [
    'elasticHosts'=>[
        '172.17.0.2:9200'
    ],
    'dbConfig'=>[
        'dbName'=>'shop',
        'dbHost'=>'shop-mysql',
        'dbUser'=>'root',
        'dbPass'=>'root',
    ],
    'indexingConfig'=>[
        \Application\Entity\Category::class=>[
            'queryConfig'=>[
                'fields'=>['category_name', 'category_description'],
                'table'=>'category',
            ],
            'indexConfig'=>[
                'index'=>'shop',
                'id'=>'id'
            ]
        ],
        \Application\Entity\MeasureUnit::class=>[
            'queryConfig'=>[
                'fields'=>['measure_unit_name', 'measure_unit_mark'],
                'table'=>'measure_unit',
            ],
            'indexConfig'=>[
                'index'=>'shop',
                'id'=>'id'
            ]
        ],//...
    ]
];

```

`queryConfig` contains table name from your MySQL database and name of fields from that table that you want to index. `indexConfig` contains index name and name of `id` column from MySQL database table.

In second file you have to put following code:

```
require_once "vendor/autoload.php";
require_once "retroactiveIndexingConfig.php";

\ElasticAdapted\ElasticRetroactiveIndexing::createRetroactiveIndexing($retroactiveIndexingConfig)->doIndexing();

```

Then in your docker web container run following command:

```
php data/elasticadapted/doRetroactiveIndexing.php

```

### Configuration for second part of functionality

[](#configuration-for-second-part-of-functionality)

In your `global.php` file you have to provide following configuration array:

```
'elastic_config'=>[
        'hosts'=>[
            '172.17.0.2:9200'
        ],
        'indexing'=>[
            \Application\Entity\Product::class=>['name', 'description'],
            \Application\Entity\Category::class=>['categoryName', 'categoryDescription']
        ],
    ],

```

`indexing` part of this array provides, like keys, entity names whose fields you want to index, and like values, arrays with entity field names that you want to index.

#### Indexing

[](#indexing)

In factory of service where you are adding record by `entityManager`, through factory of this service, you have to provide instance of ElasticManager like this:

```
$config = ($container->get('config'))['elastic_config'];
$elasticManager = new ElasticManager($config);

```

Now, you can inject `$elasticManager` in service constructor.

After calling method `flush()` in your service you have to provide this code:

```
$elasticIndexing = $this->elasticManager->getElasticIndexing();
$elasticIndexing->setIndex('indexName');
$elasticIndexing->setEntityInstance($instanceOfTargetedEntity);
$elasticIndexing->indexing();

```

where `$instanceOfTargetedEntity` is entity instance that you put in entity manager `persist()` method;

#### Searching

[](#searching)

1. get searching

```
$elasticSearching = $this->elasticManager->getElasticSearching();
$elasticSearching->setIndex('indexName');
$elasticSearching->setId("idName");
$result = $elasticSearching->getById();

```

2. match searching

```
$elasticSearching = $this->elasticManager->getElasticSearching();
$elasticSearching->setIndex('indexName');
$result = $elasticSearching->matchSearching(['fieldName'=>'word']);

```

3. should match searching

```
$elasticSearching = $this->elasticManager->getElasticSearching();
$elasticSearching->setIndex('indexName');
$result = $elasticSearching->shouldMatchSearching([['fieldName'=>'word'],['fieldName'=>'word']]);

```

4. must match searching

```
$elasticSearching = $this->elasticManager->getElasticSearching();
$elasticSearching->setIndex('indexName');
$result = $elasticSearching->mustMatchSearching([['fieldName'=>'word'],['fieldName'=>'word']]);

```

5. should wildcard searching

```
$elasticSearching = $this->elasticManager->getElasticSearching();
$elasticSearching->setIndex('indexName');
$result = $elasticSearching->shouldWildcardsSearching([['fieldName'=>'word'],['fieldName'=>'word']]);

```

6. must wildcard searching

```
$elasticSearching = $this->elasticManager->getElasticSearching();
$elasticSearching->setIndex('indexName');
$result = $elasticSearching->mustWildcardsSearching([['fieldName'=>'word'],['fieldName'=>'word']]);

```

For every indexed document is provided `searching_content` field, and in that field are contents from all indexed fields, it makes this possible:

```
$elasticSearching = $this->elasticManager->getElasticSearching();
$elasticSearching->setIndex('indexName');
$result = $elasticSearching->shouldWildcardsSearching([['searching_content'=>'*phraze*']]);

```

#### Deleting

[](#deleting)

1. Deleting all by index name

```
$elasticDeleting = $this->elasticManager->getElasticDeleting();
$elasticDeleting->deleteAllByIndex('indexName');

```

2. Deleting by id

```
$elasticDeleting = $this->elasticManager->getElasticDeleting();
$elasticDeleting->setId('idName');
$elasticDeleting->deleting();

```

#### Updating

[](#updating)

```
$elasticUpdating = $this->elasticManager->getElasticUpdating();
$elasticUpdating->setIndex('indexName');
$elasticUpdating->setEntityInstance($instanceOfTargetedEntity);
$elasticUpdating->updating();

```

###  Health Score

14

—

LowBetter than 2% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity24

Early-stage or recently created project

 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/10cd20fe09f48a96231584005426ba029a4a14e882679ad59a7add0fb82f9495?d=identicon)[nikolacuric](/maintainers/nikolacuric)

---

Top Contributors

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

### Embed Badge

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

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

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M480](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M272](/packages/twilio-sdk)[knplabs/github-api

GitHub API v3 client

2.2k15.8M187](/packages/knplabs-github-api)[facebook/php-business-sdk

PHP SDK for Facebook Business

90121.9M34](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

73813.7M114](/packages/meilisearch-meilisearch-php)[google/gax

Google API Core for PHP

263103.1M454](/packages/google-gax)

PHPackages © 2026

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