laravel 的 scout elasticsearch ik laravel-scout-elastic 之间的关系与安装

一 简介

laravel 的组件化使 laravel 的使用更加得心应手。

Laravel Scout 为 Eloquent 模型 全文搜索提供了简单的,基于驱动的解决方案。通过使用模型观察者,Scout 会自动同步 Eloquent 记录的搜索索引。

简单的来说 Scout 是用来全文检索的一个组件(不具有搜索功能),它使用驱动来调用搜索引擎来进行搜索。这里讲解 laravel 使用 elasticsearch 搜索引擎。

在已有的项目中要想使用 elsaticsearch 搜索引擎,需要四个步骤:

1.给项目 compoer 安装 Scout    2.给项目 composer 安装 elasticsearch 驱动

3.给服务器安装 elasticsearch 搜索引擎    4.在项目中建立 elasticsearch 索引和模板

1 和 2 使用 composer 来安装,3 我们使用GitHub上别人做的集成包,里面有个 ik 插件,是用来优化中文检索,elasticsearch 只是搜索引擎,而对搜索的实际效果是靠插件来进行的。ik 中文搜索靠的是词意解析,中华人民共和国国歌,精确解析:中华人民共和国、中华、华人、人民、共和国、国歌,粗糙解析:中华人民共和国、国歌。解析的效果不同。

下面给出带有 ik 插件的 elastsearch 集成包:https://github.com/medcl/elasticsearch-rtf

二 安装步骤

1.安装 elasticsearch 搜索引擎到服务器

  下载上面的集成包,Download ZIP,在服务器上进行解压(windows测试练习同样步骤、下载解压)

  下载 java1.8 安装和配置环境变量(这里不讲解,百度大把教程,已经安装的继续)

  打开解压的文件夹到 bin 下,可以使用 ls 查看bin下的文件( windows下命令行使用 dir 查看 )

  有一个 elasticsearch 和 elasticsearch.bat ,这时候我们启动 elasticsearch

  方法是输入:elasticsearch -d ( windows下命令行里输入 elasticsearch.bat -d ),这样子就可以启动成功

  启动会显示日志,可以看到有 127.0.0.1:9200 既是启动成功,可以在浏览器输入这个 ip加端口,会看到一个 json 信息。

  在服务器搭建的时候,一定要启动并且守护进程。bin 下还有一个文件是 elasticsearch-plugin

  可以使用 elasticsearch-plugin list 来查看搜索引擎的插件,其中一个既是我们要使用的 ik 中文检索插件。

2. 安装Scout

  进入到项目里面,使用:composer require laravel/scout 来安装Scout

  安装完成后再次输入:php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

  这个目的是把 Scout.php 配置文件从 vendor 中提取到 config 中,进行 Scout 配置

  接下来把 Scout 服务提供者放入 app.php 配置文件中,在 providers 中插入:Laravel\Scout\ScoutServiceProvider::class

  这样子 Scout 就安装完了

3. 安装elasticsearch

  在进行搜索的时候,Scout 通过 elasticsearch 驱动,来调用 elasticsearch 搜索引擎,搜索引擎通过 ik 插件,进行解析并返回数据。

  安装驱动通过 composer 安装,终端( 或者命令行 )打开项目输入:composer require tamayo/laravel-scout-elastic

  安装完成后,到 app.php 配置文件中注册服务提供者,在 providers 中插入:ScoutEngines\Elasticsearch\ElasticsearchProvider::class

  插入完成后,到 Scout.php 配置文件中,配置 Scout 的驱动为 elasticsearch

  将驱动的默认值改为elasticsearch,在配置文件中找到这一段并修改  ‘driver‘ => env(‘SCOUT_DRIVER‘, ‘elasticsearch‘)

  在下方插入 elasticsearch 驱动的配置,其意思为,elasticsearch 的索引名为 laravel ,可以自己修改,它的 ip 地址为本服务器的 9200 端口:

  ‘elasticsearch‘ => [ ‘index‘ => env(‘ELASTICSEARCH_INDEX‘, ‘laravel‘), ‘hosts‘ => [ env(‘ELASTICSEARCH_HOST‘, ‘http://127.0.0.1:9200‘), ], ],

  这样,驱动就安装配置完成

4. elasticsearch 的索引和模板建立

  使用 Artisan 创建一个自定义 command 命令,这个命令用来初始化创建索引和模板。

  创建 command 的方法:php artisan make:command ESinit    给这个命令取名为ESinit,意思为初始化ES

  创建好了,在 app 下的 Console 中会生成文件夹 Commands,这个文件夹存放自定义的 artisan 命令,我们可以到看 ESinit.php

  在这个文件中有两个属性和两个方法,属性为命令名称和描述,方法为一个构造函数和一个 handle 句柄函数。

  修改两个属性,第一个为:es:init ,意思为在我们创建好了这个命令的时候,就可以使用 php artisan es:init 来执行 handle 行为去创建模板与索引

  第二个为这个命令的描述,用来告诉使用者,这个命令是用来干吗,修改为:init laravel es for model ,意思为初始化 laravel 的 es 搜索对某个模型

  接下就要进行 handle 行为编写,第一个是编写 template 模板,第二个是编写 index 索引

  

  在完成 handle 行为的编写,就可以把这个自定义命令挂载到 artisan 中,在 app 下的 Console 下的 Kernel.php 中的 commands 属性中加上

  \App\Console\Commands\ESinit::class  这段代码即可完成挂载。

原文地址:https://www.cnblogs.com/muwu/p/9030531.html

时间: 2024-08-29 11:10:20

laravel 的 scout elasticsearch ik laravel-scout-elastic 之间的关系与安装的相关文章

Entrust - Laravel 用户权限系统解决方案 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 - Powered by PHPHub

说明# Zizaco/Entrust 是 Laravel 下 用户权限系统 的解决方案, 配合 用户身份认证 扩展包 Zizaco/confide 使用, 可以快速搭建出一套具备高扩展性的用户系统. Confide, Entrust 和 Sentry# 首先两个概念分清楚: 用户身份认证 Authentication - 处理用户登录, 退出, 注册, 找回密码, 重置密码, 用户邮箱认证 etc.. 权限管理 Authorization - 负责 用户 与 权限, 用户组 三者之间的对应, 以

Elastic Search | Head插件的安装与简单使用

Elastic Search | Head插件的安装与简单使用 Elastic Search Head插件是一个入门级的Elastic Search前端插件:使用它可以按照Restful API来操作Elastic Search. 安装Node JS 我们使用官网直接下载编译好的二进制文件进行安装. 到官网右击红圈的内容,复制下载地址: 到cd /usr/local目录,使用wget https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64

Elasticsearch IK+pinyin

如何在Elasticsearch中安装中文分词器(IK+pinyin) 如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当用Kibana作图的时候,按照term来分组,结果一个汉字被分成了一组. 这是因为使用了Elasticsearch中默认的标准分词器,这个分词器在处理中文的时候会把中文单词切分成一个一个的汉字,因此引入中文的分词器就能解决这个问题. 本篇文章按照下面的内容进行描述: 分词器的作用 安装IK 简单的测

Centos7 Elasticsearch+IK中文分词+Kibana

一.关于elasticsearch.ik.kibana安装包的下载: 1.ik中文分词的下载地址为:https://github.com/medcl/elasticsearch-analysis-ik/releases 查看和下载对应的ik版本 2.elasticsearch.kibana安装包的而下载地址: https://www.elastic.co/downloads/past-releases 下载与ik对应版本的elasticsearch.kibana 二.安装和配置elasticse

elasticsearch IK中文分词

1. analysis-ik安装 1). 从 https://github.com/medcl/elasticsearch-analysis-ik ,下载 elasticsearch-analysis-ik-master.zip 2). 解压后, cd  elasticsearch-analysis-ik-master /usr/local/maven/bin/mvn package .... wait  5-6分钟 编译成功后, 拿到target/releases/下的zip包,上传到服务器上

[Laravel框架学习二]:Laravel的CURD和查询构造器的CURD,以及聚合函数

1 public function index() 2 { 3 4 //return Member::getMember();//这是调用模型的方法 5 6 return view('lpc',[ 7 'age'=>18, 8 'name'=>'PengchongLee', 9 ]); 10 } 11 public function test()//一个方法得设置一个路由 12 { 13 //echo 1;//测试路由 14 15 //新增数据 16 //$data = DB::insert(

菜鸟学Laravel(零) 为什么选择Laravel

菜鸟学Laravel(零): 为什么选择Laravel 本人Web方面的菜鸟一枚,突然想想学习PHP开发,就看了一下相关的介绍,Java和PHP语言是目前的主流,因为PHP入门相对较Java容易,因此选择了PHP作为学习的语言,找了几本PHP.Mysql.JavaScript.CSS等方面的知识学了一下,觉得利用PHP开发简单的网站还是非常快速而且方便的,用Smarty开发了一个小网站,发现问题很多,因此萌发了利用其它框架编写网站的想法,看了一下框架占比,给吓到了,框架太多了!选择laravel

使用 Elasticsearch ik分词实现同义词搜索(转)

1.首先需要安装好Elasticsearch 和elasticsearch-analysis-ik分词器 2.配置ik同义词 Elasticsearch 自带一个名为 synonym 的同义词 filter.为了能让 IK 和 synonym 同时工作,我们需要定义新的 analyzer,用 IK 做 tokenizer,synonym 做 filter.听上去很复杂,实际上要做的只是加一段配置. 打开 /config/elasticsearch.yml 文件,加入以下配置: [html] vi

elasticsearch ik插件

先来一个标准分词(standard),配置如下: curl -XPUT localhost:9200/local -d '{ "settings" : { "analysis" : { "analyzer" : { "stem" : { "tokenizer" : "standard", "filter" : ["standard", "