es-for-Laravel: Composer 包安装, Laravel 最简单的方式操作 Elasticsearch
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 Ethansmart\EsBuilder\Model\EsModel;
/**
* Class AtPerson
* $host ES IP或URL地址
* $port ES 端口
* $index ES 索引名称
* $type ES 索引 type名称
* @package Ethan\EsBuilder\Model
*/
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 Ethansmart\EsBuilder\Builder\EsClientBuilder;
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://segmentfault.com/a/1190000016600807
es-for-Laravel: Composer 包安装, Laravel 最简单的方式操作 Elasticsearch的更多相关文章
- composer镜像安装laravel
博主最近在学习Laravel的框架的相关知识,对于Laravel的许多新特性,大家最好还是去查看官网文档最好,Laravel的文档非常完善,中文英文的都有,可以很好的解决你的困惑. 但是我们会发现学习 ...
- laravel new xxx 安装laravel 慢的问题
问题:使用官方文档上安装 laravel laravel new xxx 安装速度奇慢无比,设置了composer 全局镜像也没有用 composer config -g repo.packagist ...
- Linux tar包安装Nginx-1.7.6 (yum方式安装依赖)
1.首先安装依赖包(依赖包有点多,我们采用yum的方式来安装) yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel ...
- 使用 Composer 安装 Laravel 框架
前言: 1. Composer 安装 Laravel 有两种方式: 第一种是通过 Composer 的 create-project 命令安装 Laravel 框架, 第二种是先通过 Composer ...
- windows环境下安装composer,然后使用composer安装Laravel
Composer 不是一个包管理器,它仅仅是一个依赖管理工具,它允许你申明项目所依赖的代码库,并在你的项目中安装这些代码库.它涉及 “packages” 和 “libraries”,但它在每个项目的基 ...
- 安装Laravel框架,利用composer
学一学PHP框架--Laravel的设计思想. 先安装Laravel: Laravel的文档很全:参考 http://www.golaravel.com/ 既然文档很全,就简单说下几个重点.以下以安装 ...
- 如何开发、本地测试、发布 Laravel 扩展包?
如何开发.本地测试.发布 Laravel 扩展包? Laravel/ 1年前/ 4022 / 11 现在已经有了很多,关于如何开发 Laravel 扩展包的文章.但是大多文章写的太过片面,不 ...
- Laravel Study(使用 Laravel )
開始 伺服器及相關工具安裝自行建立,在伺服器跟目錄下 有兩種方式建立 Laravel 專案,這裡使用 composer 建立專案 使用 composer 要在 PHP 5.3.2 以上才能使用 com ...
- 使用 Composer 安装Laravel扩展包的几种方法
使用 Composer 安装Laravel扩展包的几种方法 以下的三种方法都是需要你在项目的根目录运行 第一种:composer install 如有 composer.lock 文件,直接安装,否则 ...
随机推荐
- bindActionCreators作用
个人总结: 讲一下bindActionCreators这个API, bindActionCreators是要结合mapDispatchToProps来使用的. mapDispatchToProps函数 ...
- Vue.mixin Vue.extend(Vue.component)的原理与区别
1.本文将讲述 方法 Vue.extend Vue.mixin 与 new Vue({mixins:[], extend:{}})的区别与原理 先回顾一下 Vue.mixin 官网如下描述: Vue. ...
- BZOJ 1576 [USACO]安全路经Travel (树剖+线段树)
题目大意: 给你一张无向图,求1到其他节点 不经过最短路的最后一条边 的最短路长度,保证每个节点的最短路走法唯一 神题,$USACO$题目的思维是真的好 先$dijkstra$出最短路树 对于每个节点 ...
- Linux mysql-5.7.17安装 教程
1.下载安装文件 #mkdir /data #mkdir /data/software #cd /data/software #wget http://dev.mysql.com/get/Downl ...
- 如何让myeclipse左边选中文件后自动关联右边树
在左侧项目树的右上角下拉菜单里有link with editor 点击即可
- Nuxt开发经验分享
Nuxt开发经验分享 本文章基于starter-template模板进行讲解,面向有vue-cli开发经验的宝宝 vue init nuxt-community/starter-template ...
- 8:30+1.5小时,返回时间格式的 php函数
一个实用的自定义函数 /** * 传入8:30格式的开始时间,和小数形式的小时长度,返回结束时间 * @param [type] $start [description] 8:30 * @param ...
- Opencv 视频转为图像序列
本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50283303 基于OpenCV的视频转 ...
- POJ——T2186 Popular Cows || 洛谷——P2341 [HAOI2006]受欢迎的牛
http://poj.org/problem?id=2186 || https://www.luogu.org/problem/show?pid=2341 Time Limit: 2000MS M ...
- Android Java 程序员必备开发工具
对于Java,有两种截然不同的观点:一种认为Java是最简单功能最强大的编程语言之一,另一种则表示这种编程语言既难用又复杂. 下面这些工具或许功能和作用不同,但是有着一个共同的主旨,那就是——它们都是 ...