最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

关于laravel使用es的正确姿势

来源:懂视网 责编:小采 时间:2020-11-02 18:23:49
文档

关于laravel使用es的正确姿势

关于laravel使用es的正确姿势:下面由Laravel教程栏目给大家介绍laravel使用es的正确姿势,希望对需要的朋友有所帮助! Elasticsearch 简介Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了
推荐度:
导读关于laravel使用es的正确姿势:下面由Laravel教程栏目给大家介绍laravel使用es的正确姿势,希望对需要的朋友有所帮助! Elasticsearch 简介Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了
下面由Laravel教程栏目给大家介绍laravel使用es的正确姿势,希望对需要的朋友有所帮助!

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=”BasemkhiratElasticsearchElasticsearchServiceProvider”

配置

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

'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'],
 ],
 ],
 ],
 ],
 ];

结语

ES 内置分词器对中分支持并不友好,比较推荐的是 IK分词器,需要注意的是ik版本需要与ES的版本号保持一致。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

关于laravel使用es的正确姿势

关于laravel使用es的正确姿势:下面由Laravel教程栏目给大家介绍laravel使用es的正确姿势,希望对需要的朋友有所帮助! Elasticsearch 简介Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了
推荐度:
标签: 使用 es la
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top