温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

laravel如何使用es

发布时间:2021-03-02 10:41:52 来源:亿速云 阅读:549 作者:清风 栏目:编程语言

这篇“laravel如何使用es”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“laravel如何使用es”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们进入主题吧。

Laravel 是什么

Laravel 是一套简洁、优雅的PHP Web开发框架。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。

Elasticsearch 简介

Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。

ES 和 Mysql

ES 里的概念类比于 Mysql 如下图所示:
laravel如何使用es

倒排索引

在说倒排索引之前我们先说说什么是正排索引。正排索引也称为”前向索引”,它是创建倒排索引的基础。
laravel如何使用es
如上在查询一个 keyword 在哪些文档里包含的时候,需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大延长,检索效率低下。这个时候我们就用到了倒排索引,首先将文档分词。
laravel如何使用es
比如我们要查询‘搜索引擎’这个关键词在哪些文档中出现过。首先我们通过倒排索引可以查询到该关键词出现的文档位置是在1和3中;然后再通过正排索引查询到文档1和3的内容并返回结果。

Laravel 使用 ES

安装插件

basemkhirat/elasticsearch 是 Laravel 中使用 ES 的一个扩展,使用起来非常方便:
1)安装方法

$ composer require basemkhirat/elasticsearch

2)发布

$ php artisan vendor:publish –provider=”Basemkhirat\Elasticsearch\ElasticsearchServiceProvider”

配置

这样我们就安装好了,如下是我们的连接配置:

'connections' => [
    'default' => [
        'servers' => [
            [
                "host" => env("ELASTIC_HOST", "127.0.0.1"),
                "port" => env("ELASTIC_PORT", 9200),
                'user' => env('ELASTIC_USER', ''),
                'pass' => env('ELASTIC_PASS', ''),
                'scheme' => env('ELASTIC_SCHEME', 'http'),
            ]
        ],
        'index' => env('ELASTIC_INDEX', 'my_index')
    ]],

servers 里可以加入我们的集群配置。

使用方法

该插件的使用方法可借鉴 Laravel 的查询构造器,支持常用的如 wherewhereInwhereBetweenorderByfirstget,也支持分页方法paginate

$documents = ES::connection(“default”)
             ->index(“my_index”)
              ->type(“my_type”)
              ->get();    # return a collection of results

设置字段权重:

ES::type(“my_type”)->search(“hello”, function($search){
   $search->boost(2)->fields([“title” => 2, “content” => 1])
})->get();

我们也可以通过修改源码扩充自己需要用到的方法,也可以构造原生的查询语句:

$params['body'] = [
            'aggs' => [
                'all_created' => [
                    'terms' => [
                        'field' => 'element.raw',
                        'size'  => $this->_mAggsPageSize                    ],

                    'aggs' => [

                        'sum_pv' => [
                            'sum' => ['field' => 'pv'],
                        ],
                    ],
                ],
            ],
        ];

以上是“laravel如何使用es”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI