3xw / cakephp-elastic-search
CakePHP pages plugins
Installs: 280
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 4
Forks: 0
Open Issues: 0
Type:cakephp-plugin
Requires
- php: >=7.2
- cakephp/cakephp: ^4.0
- cakephp/elastic-search: 3.2.1
Requires (Dev)
This package is auto-updated.
Last update: 2024-12-26 19:53:56 UTC
README
This plugin allows you deal with ES
Installation
You can install this plugin into your CakePHP application using composer.
The recommended way to install composer packages is:
composer require 3xw/elastic-search
Load it in your config/boostrap.php
Plugin::load('Trois/ElasticSearch');
Setup
in app.php add at least one connection:
'Datasources' => [
'elastic' => [
'className' => 'Cake\ElasticSearch\Datasource\Connection',
'driver' => 'Cake\ElasticSearch\Datasource\Connection',
'host' => 'localhost',
'port' => 6379,
],
...
]
Mapping
The shell will ask you a mapping template. Follow offical doc native elasticsearch mapping format to create your own index mapping or use default one which the prompt proposes you: vendor/3xw/cakephp-elastic-search/templates/mapping.json
{
"settings": {
"analysis": {
"filter": {
"french_elision": {
"type":"elision",
"articles_case": true,
"articles": [
"l", "m", "t", "qu", "n", "s",
"j", "d", "c", "jusqu", "quoiqu",
"lorsqu", "puisqu","t"
]
},
"french_stop": {
"type": "stop",
"stopwords": "_french_"
},
"french_keywords": {
"type": "keyword_marker",
"keywords": [
"Prométerre",
"Agrivit","Ecoprest","Estimapro","Fidasol","Fiprom",
"Fondation rurale de prévoyance","FRP",
"Mandaterre",
"Office de crédit agricole","OCA",
"Proconseil","Proterroir","SAD","SRPJ","Sofia SA"
]
},
"french_stemmer": {
"type": "stemmer",
"language": "light_french"
}
},
"analyzer": {
"french": {
"tokenizer": "standard",
"filter": [
"french_elision",
"lowercase",
"french_stop",
"french_keywords",
"french_stemmer"
]
}
}
}
},
"mappings": {
"items": {
"properties": {
"foreign_key": { "type": "integer"},
"model": { "type": "keyword"},
"title": {"type": "completion", "analyzer":"french", "max_input_length": 255},
"content": {"type": "text"}
}
}
}
}
Behavior
set up your behavior as you wish
$this->addBehavior(\Trois\ElasticSearch\ORM\Behavior\SyncWithESBehavior::class,[
'index' => 'App\Model\Index\ItemsIndex',
'primaryKey' => 'foreign_key', // string or callable
'translate' => false, // property name if yes ex: locale
'staticMatching' => [
'model' => 'Posts'
], // or [keyN => valueN/callableN]
'mapping' => [ // properties => 1. Array: entity field(s) || properties => 2. String: static value or callable
'title' => new \Trois\ElasticSearch\ORM\CompletionConstructor(['title'],[
'contexts' => [
'model' => 'Posts'
],
]),
'content' => ['header','content']
],
'deleteDocument' => true,
'separator' => ' - '
]);
Shell
Create indexes
bin/cake elastic create [indexName] [mappingFile.json]
------
Execute create index w/ mapping file Task.
Usage:
cake trois/elastic_search.elastic create [-c] [-h] [-q] [-r 1] [-s 5] [-v]
Options:
--connection, -c The Elestic Search connection to use
--help, -h Display this help.
--quiet, -q Enable quiet output.
--replicas, -r The index number of replicas. Default is 1
(default: 1)
--shards, -s The index number of shards. Default is 5
(default: 5)
--verbose, -v Enable verbose output.
Get index info
bin/cake elastic info [indexName]
------
Execute info on index Task.
Usage:
cake trois/elastic_search.elastic info [-c] [-h] [-q] [-v]
Options:
--connection, -c The Elestic Search connection to use
--help, -h Display this help.
--quiet, -q Enable quiet output.
--verbose, -v Enable verbose output.
Delete index
bin/cake elastic delete [indexName]
------
Execute delete index Task.
Usage:
cake trois/elastic_search.elastic delete [-c] [-h] [-q] [-v]
Options:
--connection, -c The Elestic Search connection to use
--help, -h Display this help.
--quiet, -q Enable quiet output.
--verbose, -v Enable verbose output.
Import entire table
bin/cake elastic import [indexName] [tableName]
------
Execute import on index with table.
Usage:
cake trois/elastic_search.elastic import [-c] [-h] [-q] [-v]
Options:
--connection, -c The Elestic Search connection to use
--help, -h Display this help.
--quiet, -q Enable quiet output.
--verbose, -v Enable verbose output.