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

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

ES for Laravel

Usage

EsBuilder 有两种模式

  1. ES ORM Client (ORM模式):支持Model映射
  2. 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的更多相关文章

  1. composer镜像安装laravel

    博主最近在学习Laravel的框架的相关知识,对于Laravel的许多新特性,大家最好还是去查看官网文档最好,Laravel的文档非常完善,中文英文的都有,可以很好的解决你的困惑. 但是我们会发现学习 ...

  2. laravel new xxx 安装laravel 慢的问题

    问题:使用官方文档上安装 laravel laravel new xxx 安装速度奇慢无比,设置了composer 全局镜像也没有用 composer config -g repo.packagist ...

  3. Linux tar包安装Nginx-1.7.6 (yum方式安装依赖)

    1.首先安装依赖包(依赖包有点多,我们采用yum的方式来安装) yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel ...

  4. 使用 Composer 安装 Laravel 框架

    前言: 1. Composer 安装 Laravel 有两种方式: 第一种是通过 Composer 的 create-project 命令安装 Laravel 框架, 第二种是先通过 Composer ...

  5. windows环境下安装composer,然后使用composer安装Laravel

    Composer 不是一个包管理器,它仅仅是一个依赖管理工具,它允许你申明项目所依赖的代码库,并在你的项目中安装这些代码库.它涉及 “packages” 和 “libraries”,但它在每个项目的基 ...

  6. 安装Laravel框架,利用composer

    学一学PHP框架--Laravel的设计思想. 先安装Laravel: Laravel的文档很全:参考 http://www.golaravel.com/ 既然文档很全,就简单说下几个重点.以下以安装 ...

  7. 如何开发、本地测试、发布 Laravel 扩展包?

    如何开发.本地测试.发布 Laravel 扩展包?  Laravel/ 1年前/  4022 /  11   现在已经有了很多,关于如何开发 Laravel 扩展包的文章.但是大多文章写的太过片面,不 ...

  8. Laravel Study(使用 Laravel )

    開始 伺服器及相關工具安裝自行建立,在伺服器跟目錄下 有兩種方式建立 Laravel 專案,這裡使用 composer 建立專案 使用 composer 要在 PHP 5.3.2 以上才能使用 com ...

  9. 使用 Composer 安装Laravel扩展包的几种方法

    使用 Composer 安装Laravel扩展包的几种方法 以下的三种方法都是需要你在项目的根目录运行 第一种:composer install 如有 composer.lock 文件,直接安装,否则 ...

随机推荐

  1. Pyhton学习——Day10

    #################################################################################################### ...

  2. Server初见——python

    import socketphone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.bind(('127.0.0.1',8080))p ...

  3. post数据html数据获取危险处理办法

      基础小知识 ValidateRequest属性是Page类中比较常用的属性,用来指示是否对输入数据进行潜在危险性检查.在默认情况下为True,就是表示 “是对输入的数据进行潜在危险性检查”,这个属 ...

  4. [LUOGU]2016 Sam数

    我本来想看看SAM,就看见了这个.. 这道题很容易让人想到数位DP,用\(f[i][j]\)表示考虑到第\(i\)位,最后一位是\(j\)的方案数.看到1e18,直接矩阵快速幂加速,因为它每位转移都是 ...

  5. 【codeforces 746E】Numbers Exchange

    [题目链接]:http://codeforces.com/problemset/problem/746/E [题意] 你有n张卡片,上面写着不同的数字; 然后另外一个人有m张上面写着不同的数字的卡片: ...

  6. cocos2d-x 中XML解析与数据存储

    一不小心就玩了一周的游戏了.哎.玩的时候时间过得总是这么快... 于是今天决定看一下之前不怎么非常熟悉的XML;(之前做游戏时数据的储存用到过XML,但这块是还有一个同事在做,所以不怎么熟悉), 看了 ...

  7. ADO.NET (二)—— ADO和ADO .NET对照

     ADO.NET (二)-- ADO和ADO .NET对照       我们知道ADO.NET的两大核心组件各自是Data Provider和DataSet.假设说 DataSet是ADO.NET的心 ...

  8. 开心的小明(南阳oj49)(01背包)

    开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 小明今天非常开心.家里购置的新房就要领钥匙了,新房里有一间他自己专用的非常宽敞的房间.更让他高兴的是,妈妈 ...

  9. HTML打开摄像头,进行拍照上传

    html代码 <%@ page language="java" contentType="text/html; charset=utf-8" pageEn ...

  10. html5中调用摄像头拍照

    方法: getCamera: 获取摄像头管理对象 对象: Camera: 摄像头对象 CameraOption: JSON对象.调用摄像头的參数 PopPosition: JSON对象,弹出拍照或摄像 ...