关于laravel使用es的正确姿势

下面由laravel教程栏目给大家介绍laravel使用es的正确姿势,希望对需要的朋友有所帮助!

                                                       

关于laravel使用es的正确姿势

Elasticsearch 简介

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

课程推荐→:《elasticsearch全文搜索实战》(实战视频)来自课程《千万级数据并发解决方案(理论+实战)》

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的版本号保持一致。                                                

以上就是关于laravel使用es的正确姿势的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/83827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
客户管理用什么软件做好
上一篇 2025年11月16日 19:44:18
客户风险管理什么意思
下一篇 2025年11月16日 19:44:35

相关推荐

  • mysql怎么删除not null限制

    在mysql中,可以利用“ALTER TABLE”语句从指定表的列中删除“not null”非空限制,利用modify可以修改表中字段的数据类型和约束条件,语法为“ALTER TABLE 表名 MODIFY 字段名 INT NULL;”。 本教程操作环境:windows10系统、mysql8.0.2…

    2026年8月31日
    000
  • 通过 Eloquent 模型关联实现订单菜品分组

    本文旨在介绍如何使用 Laravel Eloquent 模型关联,根据餐厅 ID 获取订单信息,并将订单中的菜品按照订单 ID 进行分组,最终返回包含订单详细信息和菜品列表的 JSON 数据。通过 `with()` 和 `whereHas()` 方法,可以避免使用循环,提高查询效率,使代码更加简洁易…

    2026年8月31日
    100
  • mysql有哪些权限

    mysql有哪些权限mysql有哪些权限mysql有哪些权限mysql有哪些权限

    mysql权限有:1、USAGE,只能用于数据库登录,不能执行任何操作;2、SELECT,允许使用SELECT语句查看表内容的权限;3、super,允许执行一系列数据库管理命令;4、process,允许查看进程信息;5、Shutdown等。 本教程操作环境:windows7系统、mysql8版本、D…

    2026年8月31日 用户投稿
    000
  • 如何解决Laravel中复杂的BelongsToThrough关系问题?使用Composer可以!

    可以通过以下地址学习 composer:学习地址 在 Laravel 开发中,我们常常需要处理复杂的模型关系。最近,我在处理一个项目时遇到了一个棘手的问题:需要在多层级的模型之间建立 BelongsToThrough 关系。传统的 HasManyThrough 关系无法满足我的需求,因为它只支持一层…

    用户投稿 2026年8月31日
    000
  • HBase列式存储究竟是如何工作的?它与传统行式数据库有何区别?

    HBase:深入理解其高效的列式存储 hbase,作为一款基于hadoop的分布式nosql数据库,其独特的列式存储机制使其在处理海量数据时展现出显著优势,与传统的行式数据库(如mysql)有着本质区别。本文将阐述hbase列式存储的原理,并揭示其高效性的关键所在。 HBase的核心概念是“列族”(…

    2026年8月31日
    100
  • 1688客户端如何评价已购商品_1688客户端评价已购商品和店铺

    1688客户端评价已购商品需先登录,进入“我的”页面点击“待评价”,选择订单后进行商品星级打分、填写具体使用体验、上传图片视频,并对供应商服务与物流分别评分,评价时应描述细节与真实感受,提交后可修改,评价将影响供应商评分并可能提升买家账号权重。 1688客户端如何评价已购商品?这是不少网友都关注的,…

    2026年8月31日
    000
  • 如何解决PHP缓存中的层次化管理问题?使用cache/hierarchical-cache库可以!

    可以通过以下地址学习Composer:学习地址 在开发一个大型的php应用时,缓存管理是一个关键的性能优化点。我的项目中使用了psr-6标准的缓存系统,但随着数据量的增加,我发现缓存键的管理变得越来越复杂。特别是当缓存键包含层次结构时,例如users:uid:followers:fid:likes,…

    用户投稿 2026年8月31日
    000
  • postgresql和mysql有什么区别

    区别:1、MySQL通过执行命令启动实例,而PG通过执行进程来启动;2、PG支持物化视图、而MySQL不支持物化视图;3、MySQL不支持拓展性,而PG是高度可扩展的;4、PG存储过程的功能支持要比MySQL好,具备本地缓存执行计划的能力。 本教程操作环境:windows7系统、mysql8版本、D…

    2026年8月31日
    000
  • mysql怎么限制查询数量

    mysql中,可以通过在SELECT查询语句中使用“LIMIT”关键字来限制查询数量,该关键字可以指定查询结果从哪条记录开始显示,一共显示多少条记录;语法“SELECT {*|字段列名} FROM 数据表 LIMIT 初始位置,记录数;”。 本教程操作环境:windows7系统、mysql8版本、D…

    2026年8月31日
    000
  • 如何解决Laravel模型中虚拟列的问题?使用stancl/virtualcolumn可以!

    可以通过以下地址学习 composer:学习地址 在 Laravel 项目中,虚拟列(Virtual Column)是一种强大的功能,可以让我们在不实际创建数据库列的情况下,在模型中定义和使用额外的属性。然而,直接在模型中手动实现虚拟列可能会导致代码复杂度增加,并且难以管理和维护。 我最近在项目中遇…

    用户投稿 2026年8月31日
    100
  • mysql怎么增加权限

    mysql中可用GRANT语句为用户增加权限,语法“GRANT 权限类型 ON 权限级别值 TO user [IDENTIFIED BY ‘密码’] [WITH子句];”;其中参数“user”表示用户账户,格式为“’用户名’@’主机名&#8…

    2026年8月31日
    200
  • 包子漫画官网最新地址是什么 包子漫画在线阅读官网首页直达

    包子漫画官网最新地址是https://www.kmh.la,该平台提供丰富多样的漫画资源,涵盖热血、恋爱、搞笑等多种题材,支持高清彩色阅读、夜间模式、离线缓存及个人书架管理,并具备智能推荐和评论互动功能,确保用户获得优质连贯的阅读体验。 包子漫画官网最新地址是什么?这是不少网友都关注的,接下来由PH…

    2026年8月31日
    100
  • 如何解决PHPHTTP请求和响应处理的复杂性?sabre/http库可以帮你!

    可以通过以下地址学习composer:学习地址 在开发一个需要处理大量http请求和响应的项目时,我遇到了一个棘手的问题:php的原生http处理方式过于繁琐和不一致,导致代码难以维护和扩展。例如,获取请求信息需要从$_get、$_post、$_server等超全局变量中提取,输出响应则需要使用he…

    用户投稿 2026年8月31日
    300
  • mysql怎么删除unique约束

    mysql中可用“ALTER TABLE”语句和“DROP”关键字来unique约束,语法为“ALTER TABLE 表名 DROP INDEX 约束名;”;“ALTER TABLE”可增减约束,当和“DROP”一起使用,即可实现删除约束。 本教程操作环境:windows7系统、mysql8版本、D…

    2026年8月31日
    000
  • 如何解决TYPO3CMS中的模板问题?使用typo3/cms-fluid可以!

    可以通过以下地址学习Composer:学习地址 在使用typo3 cms开发网站的过程中,我遇到了一个常见但棘手的问题:如何高效地管理和设计复杂的页面模板。传统的模板引擎虽然功能强大,但有时在处理动态内容和复杂布局时显得力不从心。经过一番探索,我发现了typo3/cms-fluid这个扩展,它完美地…

    2026年8月31日
    000
  • MySQL的InnoDB和MyISAM引擎区别是什么_该如何选择?

    MySQL的InnoDB和MyISAM引擎区别是什么_该如何选择?MySQL的InnoDB和MyISAM引擎区别是什么_该如何选择?MySQL的InnoDB和MyISAM引擎区别是什么_该如何选择?MySQL的InnoDB和MyISAM引擎区别是什么_该如何选择?

    innodb与myisam的核心差异在于事务支持、并发控制和数据完整性。1.innodb支持事务(acid特性)、行级锁定、外键约束和崩溃恢复,适合高并发、数据一致性要求高的场景;2.myisam采用表级锁定、无事务支持、无外键约束,仅在极少数读多写少、数据一致性要求低的场景下可能被考虑;3.inn…

    2026年8月31日 用户投稿
    000
  • PHP中高效处理多URL请求:避免循环嵌套陷阱

    本文旨在解决PHP中处理多个URL请求时常见的循环逻辑错误,特别是当URL数据来源于数据库查询时。通过分析错误的嵌套循环模式,提供一种简洁高效的解决方案,即在单个循环中直接处理每条数据库记录并发送HTTP请求。此外,文章还将探讨 file_get_contents 的使用细节、潜在的性能问题以及替代…

    2026年8月31日
    000
  • 如何解决PHP中的WebDAV服务问题?使用sabre/dav可以!

    可以通过一下地址学习composer:学习地址 在开发一个需要webdav功能的项目时,我遇到了一个棘手的问题:如何在php中高效地实现webdav、caldav和carddav服务。尝试了多种方法后,我发现sabre/dav这个库不仅解决了我的问题,还提供了强大的功能和灵活性。 sabre/dav…

    用户投稿 2026年8月31日
    000
  • mysql怎么查询表的字段名

    mysql中可用“SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ‘数据库名’ AND TABLE_NAME = ‘表名’”语句查询表的字段名。 本教程操作…

    2026年8月31日
    000
  • 如何解决Laravel项目中的API请求管理问题?使用SaloonPHP/Laravel-Plugin可以!

    可以通过以下地址学习 composer:学习地址 在开发 Laravel 项目时,管理 API 请求常常是一个挑战。随着项目的扩展,API 请求的数量和复杂性增加,如何高效地管理这些请求成为了一个难题。我曾尝试过手动编写请求逻辑,但这不仅耗时,而且容易出错。幸运的是,我发现了 SaloonPHP/L…

    用户投稿 2026年8月31日
    000

发表回复

登录后才能评论
关注微信