资讯专栏INFORMATION COLUMN

像使用 Laravel Query 一样的搜索 Elasticsearch

mumumu / 1221人阅读

摘要:需要使用到大数据引擎,但无奈,不管是官方包还是上都没有找到自己想要的,那还说什么呢,自己操刀来一份吧。地址和安装和下的加载直接开始,示例如下更多的使用方法详见最后如果对您有用请给个吧,更多的是欢迎拍砖,支持开源。

需要使用到ES大数据引擎,但无奈,不管是官方包还是Github上都没有找到自己想要的,那还说什么呢,自己操刀来一份吧。Github地址:https://github.com/crcms/elasticsearch

Composer和安装和Laravel下的加载

Version Matrix
Elasticsearch Version crcms/elasticsearch Branch
>= 6.0 1.*
>= 5.0, < 6.0 0.*
Install
composer require crcms/elasticsearch
Laravel

Modify config / app.php

"providers" => [
    CrCmsElasticSearchLaravelServiceProvider::class,
]

Pubish

php artisan vendor:publish --provider="CrCmsElasticSearchLaravelServiceProvider"

直接开始,示例如下:

Quickstart Create
Route::get("test/create",function(CrCmsElasticSearchBuilder $builder){
    $result = $builder->index("index")->type("type")->create([
        "key" => "value",
    ]);
    dump($result);
});
Update
Route::get("test/update",function(CrCmsElasticSearchBuilder $builder){
    $result = $builder->index("index")->type("type")->update("id",[
        "key" => "value2",
    ]);
    dump($result);
});
Delete
Route::get("test/delete",function(CrCmsElasticSearchBuilder $builder){
    $result = $builder->index("index")->type("type")->delete("id");
    dump($result);
});
Select
Route::get("test/select",function(CrCmsElasticSearchBuilder $builder){
    $builder = $builder->index("index")->type("type");
    
    //SQL:select ... where id = 1 limit 1;
    $result = $builder->whereTerm("id",1)->first();
    
    //SQL:select ... where (key=1 or key=2) and key1=1
    $result = $builder->where(function (Builder $inQuery) {
        $inQuery->whereTerm("key",1)->orWhereTerm("key",2)
    })->whereTerm("key1",1)->get();
    
});
More

skip / take

$builder->take(10)->get(); // or limit(10)
$builder->offset(10)->take(10)->get(); // or skip(10)

term query

$builder->whereTerm("key",value)->first();

match query

$builder->whereMatch("key",value)->first();

range query

$builder->whereBetween("key",[value1,value2])->first();

where in query

$builder->whereIn("key",[value1,value2])->first();

logic query

$builder->whereTerm("key",value)->orWhereTerm("key2",value)->first();

nested query

$result = $builder->where(function (Builder $inQuery) {
    $inQuery->whereTerm("key",1)->orWhereTerm("key",2)
})->whereTerm("key1",1)->get();

更多的使用方法详见Github

最后:如果对您有用请给个Star吧,更多的是欢迎拍砖,支持开源。

文章已同步于laravel-china

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

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

相关文章

  • 为你站点插上ElasticSearch翅膀

    摘要:下载并安装目前的最新稳定版为,如果之后版本有升级,请将相应的版本号替换掉上面的。在实现的过程中,貌似对中文的支持不是那么好,所以接下来会尝试使用一下中文分词器来看看效果,顺利的话会再出一篇文章。 原文来自:https://jellybool.com/post/setup-slasticsearch-on-your-website 在我的博客按Shift+S就可以呼出搜索框,可...

    JouyPub 评论0 收藏0
  • Laravel5.3+Scout+ElasticSearch5.0 小记

    摘要:系统环境安装没什么要点只要跟着官方文档流程一般都能安装成功并成功运行不过在线上环境别人还是在用一是项目大了二是的不同版本对内存的要求不一样而且在之后由于取消了导致很多插件都不能按照以前的方式安装了比如很常用现在就要通过运行或者其他插件放 系统环境 Ubuntu16.04, ElasticSearch5.0, JDK1.8 ElasticSearch5.0 安装es5.0没什么要点,只要...

    OnlyLing 评论0 收藏0

发表评论

0条评论

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