taq / torm-elastic
TORM 的 ElasticSearch 集成
0.1.2
2015-07-11 14:45 UTC
Requires
- php: >=5.3.0
- elasticsearch/elasticsearch: ~1.0
- taq/torm: >=1.2.2
README
这是一个特性,用于在 TORM 对象上插入 ElasticSearch 功能。
安装
更改(或如果需要,创建)您的 Composer 文件以包含它
{
"require": {
"taq/torm-elastic": ">=0"
}
}
使用方法
只需打开您的模型并插入特性,例如
class User extends TORM\Model {
use TORM\ElasticSearch;
}
User::setElasticSearchIndex("myapp");
并且,在每个对象保存后,它将根据一些规则发送到 ElasticSearch 进行索引
- 需要在模型中使用
use TORM\ElasticSearch
来插入特性 - 需要使用 setElasticSearchIndex() 指定应用程序名称。这将成为 ElasticSearch 索引
- 插入特性后,模型将添加一个新的
afterInitialize
方法。如果模型已经有了afterInitialize
方法,则必须在它的末尾显式调用TORM\ElasticSearch
的afterInitialize
方法。这是由于 PHP 特性工作方式的原因。 - 如果没有指定,则将索引所有模型属性。为了仅定义一些关键属性,我们可以使用
setElasticSearchValues(<attributes>)
方法,发送一个包含属性的数组,例如
那么只有User::setElasticSearchValues(["name"]);
name
属性将被索引。
搜索
然后我们可以使用类似的方式来搜索
$rtn = ElasticUser::elasticSearch("name", "john");
var_dump($rtn);
结果可能如下
array(2) {
'id' =>
string(1) "1"
'name' =>
string(12) "John Doe Jr."
}
导入
当导入新的数据集时,我们可以使用 import
方法,例如
User::elasticImport();
获取文档计数
User:;elasticCount();
更新文档
我们可以显式使用以下方法更新文档
$obj->updateElasticSearch();
删除文档
我们可以显式使用以下方法删除文档
$obj->deleteElasticSearch();
禁用
我们可以禁用更新文档使用
TORM\ElasticSearchConfigs::disabled(true);
并在相同的方法上再次发送 false
以启用
测试
如果使用 TORM
测试环境(通过设置环境变量 TORM_ENV
为 test
定义),则索引名称将自动更改为 <index_name>_test
。
如果我们想在测试环境中避免更新文档,我们可以使用
TORM\ElasticSearchConfigs::avoidOnTests(true);