资讯专栏INFORMATION COLUMN

es-for-Laravel: Composer 包安装, Laravel 最简单的方式操作 Ela

soasme / 1061人阅读

摘要:安装地址有两种模式模式支持映射非模式支持原生使用首先创建或地址端口索引名称索引名称然后使用对进行操作搜索新增更新删除使用首先构建调用中的方法对进行操作其他方法类似创建同步数据到

composer 安装:composer require ethansmart/es-for-laravel

github 地址:https://github.com/roancsu/es-for-laravel

ES for Laravel

Usage

EsBuilder 有两种模式

ES ORM Client (ORM模式):支持Model映射

ES Client (非ORM模式):支持原生ES

使用 ES ORM Client

首先创建ORM Model

use EthansmartEsBuilderModelEsModel;
/**

* Class AtPerson
* $host ES IP或URL地址
* $port ES 端口
* $index ES 索引名称
* $type ES 索引 type名称
* @package EthanEsBuilderModel
*/

class AtPerson extends EsModel
{
    protected $host = "127.0.0.1";
    protected $port = "32800";
    protected $index = "accounts";
    protected $type = "person";
}

然后使用Model对ES进行CURD操作

搜索

try {
    $result = AtPerson::build()
              ->select("user")
              ->where("user","==","chengluo")
              ->where("title,desc","like","AI")
              ->where("create_time","<","2018-10-05")
              ->get();
} catch (Exception $e) {
    return ["code"=>-1, "msg"=>$e->getMessage()];
}
return $result;

新增

try {
    $id = 5;
    $data = [
      "id"=>$id,
      "params"=>[
            "user"=>"Ethan Cheng",
            "title"=>"AI ".str_random(8),
            "desc"=>"AI ".str_random(12)
      ]
    ];
    $result = AtPerson::build()->create($data);
} catch (Exception $e) {
    return ["code"=>-1, "msg"=>$e->getMessage()];
}

return $result;

更新

try {
    $id = 5;
    $data = [
        "id"=>$id,
        "params"=>[
            "user"=>"Ethan Cheng",
            "title"=>"AI ".str_random(8),
            "desc"=>"AI ".str_random(12)
        ]
    ];
    $result = AtPerson::build()->update($data);
} catch (Exception $e) {
    return ["code"=>-1, "msg"=>$e->getMessage()];
}

return $result;

删除

try {
    $id = 5;
    $result = AtPerson::build()->delete($id);
} catch (Exception $e) {
    throw $e;
}

return $result;

使用 ES Client

首先构建 Client

private $client ;
public function __construct()
{
    $host = "127.0.0.1";
    $port = "32800";
    $this->client = EsClientBuilder::create()
        ->setHosts($host)
        ->setPort($port)
        ->build();
}

调用Client中的方法对ES进行CURD操作

$data = [
    "index"=>"accounts",
    "type"=>"person",
    "body"=>[
          "query"=>[
              "bool"=>[
                  "must"=>[
                        "match"=>[
                              "user"=>"ethan"
                        ]
                  ]
              ]
          ]
    ],
];

try {
    $result = $this->client->search($data);
} catch (Exception $e) {
    return ["code"=>-1, "msg"=>$e->getMessage()];
}

return $result;

其他方法类似

创建Laravel Job 同步数据到 ES

use EthansmartEsBuilderBuilderEsClientBuilder;

class EsService
{
    private $client ;
    public function __construct()
    {
        $host = "127.0.0.1";
        $port = "32800";
        $this->client = EsClientBuilder::create()
            ->setHosts($host)
            ->setPort($port)
            ->build();
    }

    public function create($id)
    {
        $data = [
            "index"=>"accounts",
            "type"=>"person",
            "id"=>$id,
            "body"=>[
                "user"=>str_random(6),
                "title"=>str_random(12),
                "desc"=>str_random(16),
            ]
        ];

        try {
            $result =  $this->client->create($data);
        } catch (Exception $e) {
            return ["code"=>-1, "msg"=>$e->getMessage()];
        }
        return $result;

    }

}

Q:

在使用 composer 安装过程中会出现 如下异常:

[InvalidArgumentException]

Could not find a version of package ethansmart/es-for-laravel matching your minimum-stability (stable). Require it with an explicit version constraint allowing its desired stability.

解决方法:

在项目composer.json文件中加入:

"repositories": [
        {
            "packagist.org": false
        },
        {
            "type": "composer",
            "url": "https://packagist.org"
        }
    ],

将国内的composer镜像换成 packagist.org 就可以了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29479.html

相关文章

  • 关于laravel5.1安装心得

    摘要:完全没有基础的人基本上很难安装并使用成功。目录用于存放的依赖包。开启访问即可看到有的字样出现,代表安装配置成功。 最近开始开坑,玩php,而且laravel最近很热门,所以就这样了。小白php直接接触框架真的不容易,以前python接触的django框架看官网文档觉得写得勉强吧,不是太好看,直到看到laravel的文档才知道什么叫变态。完全没有基础的人基本上很难安装并使用成功。而且即使...

    vibiu 评论0 收藏0
  • 使用 Laravel 框架开发是什么样体验

    摘要:但也因为应有尽有使得框架的性能比其他高性能框架低了些,为此给了几个解决方案路由缓存经有关部门研究,路由缓存可有效加快访问速度以上。有朋友说框架最重要的东西是路由,我倒认为最重要的是框架中异于其他框架且能解决痛点的东西,如的。 showImg(https://segmentfault.com/img/remote/1460000006767764); 在程序界的远古时期,大神们手持键盘敲...

    Miracle_lihb 评论0 收藏0
  • 如何正确使用 Composer 安装 Laravel 扩展

    摘要:流程一新项目流程创建,并添加依赖到的扩展包运行,安装扩展包并生成提交到代码版本控制器中,如流程二项目协作者安装现有项目克隆项目后,根目录下直接运行从中安装指定版本的扩展包以及其依赖此流程适用于生产环境代码的部署。 本文经授权转自 PHPHub 社区 问题说明 我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的: showImg(https://dn-...

    BlackMass 评论0 收藏0
  • Laravel 5 系列入门教程(一)【适合中国人 Laravel 教程】

    摘要:原文发表在我的个人网站系列入门教程一最适合中国人的教程本教程示例代码见大家在任何地方卡住,最快捷的解决方式就是去看我的示例代码。在此我推荐一个全量中国镜像。 原文发表在我的个人网站:Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】 本教程示例代码见:https://github.com/johnlui/Learn-Laravel-5 大...

    EscapedDog 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<