Skip to content

taq/torm-elastic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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(). 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);