taq/torm-elastic

TORM 的 ElasticSearch 集成

0.1.2 2015-07-11 14:45 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:32:03 UTC


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\ElasticSearchafterInitialize 方法。这是由于 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_ENVtest 定义),则索引名称将自动更改为 <index_name>_test

如果我们想在测试环境中避免更新文档,我们可以使用

TORM\ElasticSearchConfigs::avoidOnTests(true);