PHP Classes

File: README.md

Recommend this page to a friend!
  Classes of Eustaquio Rangel de Oliveira Jr.   PHP Torm ORM for ElasticSearch   README.md   Download  
File: README.md
Role: Documentation
Content type: text/markdown
Description: Documentation
Class: PHP Torm ORM for ElasticSearch
Adapter for Torm ORM to access Elastic
Author: By
Last change: If not updating, avoid delete also. Method to disable global indexing.
Now we can avoid updating documents on test environment.
Fixed README.
Date: 9 years ago
Size: 2,430 bytes
 

Contents

Class file image Download

TORM-elasticsearch

This is a trait to insert ElasticSearch funcionality on TORM objects.

Installation

Change (or create, if needed) your Composer file to include it:

{
    "require": {
        "taq/torm-elastic": ">=0"
    }
}

Usage

Just open your model and insert the trait, like:

class User extends TORM\Model {
    use TORM\ElasticSearch;
}
User::setElasticSearchIndex("myapp");

and, after every object saving, it will be send for ElasticSearch indexing, using some rules:

  • Need to insert the trait using `use TORM\ElasticSearch` on the model;
  • Need to specify the app name using setElasticSearchIndex(<name>). This will be the ElasticSearch index.
  • After inserting the trait, a new `afterInitialize` method will be added on the model. If the model already has a `afterInitialize` method, the `TORM\ElasticSearch` `afterInitialize` method must be called explicity on its end. This is because of the way PHP traits works.
  • If not specified, all the model attributes will be indexed. To define just
    some key attributes, we can use the `setElasticSearchValues(<attributes>)`
    method, sending an array with the attributes, like:
    User::setElasticSearchValues(["name"]);
    
    then only the `name` attribute will be indexed.

Searching

Then we can search using something like:

$rtn = ElasticUser::elasticSearch("name", "john");
var_dump($rtn);

resulting in something like

array(2) {
  'id' =>
  string(1) "1"
  'name' =>
  string(12) "John Doe Jr."
}

Importing

When importing a new data collection, we can use the import method, like:

User::elasticImport();

Getting document count

User:;elasticCount();

Updating a document

We can explicity update a document using:

$obj->updateElasticSearch();

Deleting a document

We can explicity delete a document using:

$obj->deleteElasticSearch();

Disabling

We can disable updating documents using

TORM\ElasticSearchConfigs::disabled(true);

and enable again sending false on the same method.

Testing

If using a TORM test enviroment (defined setting the enviroment var TORM_ENV to test), the index name will be automatically changed to <index_name>_test.

If we want to avoid updating a document on the test enviroment, we can use

TORM\ElasticSearchConfigs::avoidOnTests(true);