Laravel Elasticsearch
Laravel Elasticsearch
启动Elasticsearch :进入Elasticsearch文件bin目录 命令行运行elasticsearch.bat
设置Elasticsearch端口号 进入Elasticsearch文件内 进入config 打开图内文件进行修改
框架安装 Elasticsearch
进入项目根目录 执行composer安装 composer require 'elasticsearch/elasticsearch'
控制器引用相关类 use
Elasticsearch\ClientBuilder;
创建index
$params
= [
'index'
=>
'myindex'
, #index的名字不能是大写和下划线开头
'body'
=> [
'settings'
=> [
'number_of_shards'
=> 2,
'number_of_replicas'
=> 0
]
]
];
$client
->indices()->create(
$params
);
创建index下的表:
$params
= [
'index'
=>
'myindex'
,//index索引(相当于数据库名)
'type'
=>
'mytype'
,//type值(相当于表名,一个库对应一个表)
'body'
=> [
'mytype'
=> [
'_source'
=> [
'enabled'
=> true //字段规则
],
'properties'
=> [
'id'
=> [
'type'
=> 'integer' //字段规则
],
'first_name'
=> [
'type'
=>
'text', //字段规则
'analyzer'
=> 'ik_max_word' //字段规则
],
'last_name'
=> [
'type'
=>
'text', //字段规则
'analyzer'
=>
'ik_max_word'
],
'age'
=> [
'type'
=>
'integer'
]
]
]
]
];
$client
->indices()->putMapping(
$params
);
添加数据:
$params
= [
'index'
=>
'myindex'
,
'type'
=>
'mytype'
,
//'id' => 1, #可以手动指定id,也可以不指定随机生成
'body'
=> [
'first_name'
=>
'张'
,
'last_name'
=>
'三'
,
'age'
=> 35
]
];
$client
->index(
$params
);
然后编写方法,例:
创建索引并添加:
public function esInput($data,$id){
$client = ClientBuilder::create()->setHosts(['127.0.0.1:9301'])->build();
$params = [
'index' => 'test',
'type' => 'teachers',
'id' => $id, #可以手动指定id,也可以不指定随机生成
'body' => [
'name' => $data['name'],
'desc'=>$data['desc']
]
];
$res=$client->index($params);
return $res;
}
获取数据库所有数据:
public function es(){
$client = ClientBuilder::create()->setHosts(['127.0.0.1:9301'])->build();
$params = [
'index' => 'test',
// 'index' => 'm*', #index 和 type 是可以模糊匹配的,甚至这两个参数都是可选的
'type' => 'teachers',
'_source' => ['name','desc'], // 请求指定的字段
'body' => array_merge([
'from' => 0,
'size' => 5
])
];
$data = $client->search($params);
return $data['hits']['hits'];
}
//检索($query内为检索规则,match匹配,字段名对应搜索内容)
$query = [
'query' => [
'match'=>[
'name'=>'ken'
],
],
];
$params = [
'index' => 'test',
// 'index' => 'm*', #index 和 type 是可以模糊匹配的,甚至这两个参数都是可选的
// '_id' =>'teachers10',
'type' => 'teachers',
'_source' => ['name','desc'], // 请求指定的字段
'body' => array_merge([
'from' => 0,
'size' => 5
],$query)
];
//高亮显示方法
public function esInput(Request $request){
//连接es
$client = ClientBuilder::create()->setHosts([config('setting.es.sethost')])->build();
//接收参数
$param=$request->input('fang_name')?:"";
if(!empty($param)){
//传入数据进行关键词搜索
$params = [
'index' => 'fang',
// 'index' => 'm*', #index 和 type 是可以模糊匹配的,甚至这两个参数都是可选的
'type' => 'fangs',
'_source' => ['fang_name','fang_addr','created_at','updated_at'], // 请求指定的字段
'body' => [
'query' => [
'match' => [
'fang_name' =>$param,
]
],
'highlight' => [
'pre_tags' => ["<span style='color: red'>"],
'post_tags' => ["</span style='color: red'>"],
'fields' => [
"fang_name" => new \stdClass()
]
]
]
];
}else{
//如果为传入数据进行查询所有
$params = [
'index' => 'fang',
// 'index' => 'm*', #index 和 type 是可以模糊匹配的,甚至这两个参数都是可选的
'type' => 'fangs',
'_source' => ['fang_name','fang_addr','created_at','updated_at'], // 请求指定的字段
'body' => array_merge([
'from' => 0,
'size' => 5
])
];
}
$arr=[];
$data = $client->search($params);
//取出搜索获得的数据进行循环处理
foreach ($data['hits']['hits'] as $value) {
//高亮显示的数据和原数据替换
$value['_source']['fang_name']=$value['highlight']['fang_name'][0];
//加入新的数组
$arr[]=$value['_source'];
}
dd($arr);
}
指定id单条查询
$params
= [
'index'
=>
'myindex'
,
'type'
=>
'mytype'
,
'id'
=>
'zU65WWgBVD80YaV8iVMk'//此处为存储的id值
];
$data
=
$client
->get(
$params
);
Laravel Elasticsearch相关推荐
- Laravel + Elasticsearch 实现中文搜索
安装Elasticsearch-php https://github.com/elastic/elasticsearch-php 使用composer安装: 在项目目录下,执行以下命令 compose ...
- php to es7,只需五步 集成新版 Elasticsearch7.9 中文搜索 到你的 Laravel7 项目
只需五步骤: 启动 集成 ik 中文分词插件的 Elasticsearch7.9 Docker 镜像 Laravel7 配置 Scout 配置 Model 模型 导入数据 搜索 PHP进阶30K资料, ...
- es中修改某个字段值_搜索引擎之laravel中使用elasticsearch(一)
一.概述 Elasticsearch官方提供了Composer包可直接引用就好,不过要注意:如果你使用的elastcsearch不是最新的那么我建议你指定合适的版本下载,而不要采用最新的,因为不同版本 ...
- Laravel 使用 scout 集成 elasticsearch 做全文搜索
安装需要的组件 composer require tamayo/laravel-scout-elastic composer require laravel/scout 如果composer requ ...
- Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(三)
上一篇地址:https://blog.csdn.net/huangfenhu/article/details/94009241 创建一个文章表和文章模型: php artisan make:model ...
- Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(二)
上一篇环境搭建地址:https://blog.csdn.net/huangfenhu/article/details/94004316 安装Scout 进入laravel项目的根目录使用compose ...
- Laravel 以ElasticSearch的方式使用scout
Laravel5.3已经发布了,这次版本多了一个官方工具包:scout.这个包的作用就是帮助大家更好的将全文检索工具和项目更好的结合,让开发者使用起来更方便.但是我发现了一个问题:Laravel官方文 ...
- laravel Scout包在elasticsearch中的应用
laravel Scout包在elasticsearch中的应用 2017-04-05 15:14 by 轩脉刃, ... 阅读, ... 评论, 收藏, 编辑 laravel Scout包在elas ...
- Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(一)
elasticsearch需要的环境搭建 简介: 使用elasticsearch的前提是你的主机必须安装了java的JDK,而且版本必须是1.8以上,并设置JAVA_HOME环境变量 java的jdk ...
最新文章
- python时间日期字符串各种
- ZooKeeper伪分布式集群安装
- nv4_disp.dll 蓝屏
- 什么是SVC模式【转】
- 在Winform程序中设置管理员权限及为用户组添加写入权限
- Python数据结构之四——set(集合)
- 从通用分页存储过程[ROWCOUNT方式]抽出适合自己需求的分页过程
- PLSQL Developer图形化窗口创建数据库全过程
- java Math类
- 不得不收藏的大数据Hadoop教程:Hadoop集群搭建
- c语言万年历查询程序代码,C语言实现万年历程序的代码分享
- 球面绘制六边形——二维平面坐标转成三维球面坐标
- python中cnt是什么意思_CNT是什么意思
- git fetch - git merge - git pull 指令
- UOJ #11.【UTR #1】ydc的大树 题解
- SpringBoot在controller返回一个HTML页面
- 利用转写软件进行高效记录
- GitLab分支介绍
- 不可随便给一个人说晚安『你知道它的真正意义吗?不想以后后悔就进来看看吧』
- python 头条号_python爬取今日头条收藏目录