PHP基于ElasticSearch做搜索

elasticsearch是一个基于lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于restful web接口。elasticsearch是用java开发的,并作为apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

PHP基于ElasticSearch做搜索

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

PHP基于ElasticSearch做搜索

在做搜索的时候想到了 ElasticSearch ,而且其也支持 PHP,所以就做了一个简单的例子做测试,感觉还不错,做下记录。

环境

php 7.2

立即学习“PHP免费学习笔记(深入)”;

elasticsearch 6.2 下载

elasticsearch-php 6 下载

安装 elasticsearch

下载源文件,解压,重新建一个用户,将目录的所属组修改为此用户,因为 elasticsearch 无法用 root 用户启动。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gztar zxvf elasticsearch-6.2.3.tar.gzuseradd elasticsearchpassword elasticsearchchown elasticsearch:elasticsearch elasticsearch-6.2.3cd elasticsearch-6.2.3./bin/elasticsearch  // 启动

登录后复制

安装 PHP 扩展

我这里使用的是 composer 安装 elasticsearch-php。在 composer.json 文件中加入 “elasticsearch/elasticsearch”: “~6.0″,执行 composer update。

{  "require": {    // ...    "elasticsearch/elasticsearch": "~6.0"    // ...  }}

登录后复制

测试例子

创建表和测试数据

我这里准备了一张文章表来进行测试,首先是建表,其次写入测试数据,准备工作完毕之后,就开始编辑测试用例。

create table articles(  id int not null primary key auto_increment,  title varchar(200) not null comment '标题',  content text comment '内容');insert into articles(title, content) values ('Laravel 测试1', 'Laravel 测试文章内容1'),('Laravel 测试2', 'Laravel 测试文章内容2'),('Laravel 测试3', 'Laravel 测试文章内容3');

登录后复制

从 Mysql 读取数据

try {  $db = new PDO('mysql:host=127.0.0.1;dbname=test', 'root', 'root');  $sql = 'select * from articles';  $query = $db->prepare($sql);  $query->execute();  $lists = $query->fetchAll();  print_r($lists);} catch (Exception $e) {  echo $e->getMessage();}

登录后复制

实例化

require './vendor/autoload.php';use ElasticsearchClientBuilder;$client = ClientBuilder::create()->build();

登录后复制

名词解释:索引相当于 MySQL 中的表,文档相当于 MySQL 中的行记录

elasticsearch 的动态性质,在添加第一个文档的时候自动创建了索引和一些默认设置。

将文档加入索引

foreach ($lists as $row) {  $params = [    'body' => [      'id' => $row['id'],      'title' => $row['title'],      'content' => $row['content']    ],    'id' => 'article_' . $row['id'],    'index' => 'articles_index',    'type' => 'articles_type'  ];  $client->index($params);}

登录后复制

从索引中获取文档

$params = [  'index' => 'articles_index',  'type' => 'articles_type',  'id' => 'articles_1'];$res = $client->get($params);print_r($res);

登录后复制

从索引中删除文档

$params = [  'index' => 'articles_index',  'type' => 'articles_type',  'id' => 'articles_1'];$res = $client->delete($params);print_r($res);

登录后复制

删除索引

$params = [    'index' => 'articles_index'];$res = $client->indices()->delete($params);print_r($res);

登录后复制

创建索引

$params['index'] = 'articles_index';  $params['body']['settings']['number_of_shards'] = 2;  $params['body']['settings']['number_of_replicas'] = 0;  $client->indices()->create($params);

登录后复制

搜索

$params = [   'index' => 'articles_index',  'type' => 'articles_type',];      $params['body']['query']['match']['content'] = 'Laravel';$res = $client->search($params);print_r($res);

登录后复制

以上就是PHP基于ElasticSearch做搜索的详细内容,更多请关注【创想鸟】其它相关文章!

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2630043.html

(0)
上一篇 2025年3月7日 02:21:30
下一篇 2025年2月18日 06:24:16

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Laravel 单行为控制器设计的魅力

    昨天,Jeffrey Way 发布了一条推文,他问大家更愿意将其控制器命名为单数还是复数。 我回答我两种方案都不选,我使用单动作控制器。随后发生的是,有的人同意,有的不同意,有的甚至做出了最奇怪的事情。 由于十分强烈的反映,我想写一篇文章来…

    2025年3月7日
    200
  • 教你用Laravel发一封“漂洋过海”的电子邮件

                                                            下面由Laravel教程栏目给大家介绍用Laravel发一封“漂洋过海”的电子邮件,希望对需要的朋友有所帮助! 引言 电子邮件从…

    2025年3月7日
    200
  • 一文详解thinkphp控制器的定义和使用

    下面由thinkphp框架教程栏目给大家介绍thinkphp控制器的定义和使用,希望对需要的朋友有所帮助! thinkphp控制器 控制器定义 类名和文件名一样, 渲染输出 渲染输出使用return输出 ‘ming’, ‘ming’ =&g…

    2025年3月7日 编程技术
    200
  • PHP商城那个好? 2022年十大开源PHP商城【分享】

    在这个电商、短视频、直播的时代,如何实现流量的激增?最好的方法是什么?独立的网上购物中心已经成为一种流行的选择。那么,市场上有哪些开源的php网上商城系统呢?php商城那个好?下面【创想鸟】就来给大家总结分享十大开源php商城,排名不分先后…

    2025年3月7日 编程技术
    200
  • 如何在PHP中使用GraphQL创建API接口

    graphql是一种新兴的api查询语言,它能够在客户端精确地指定需要返回的数据,从而减少服务器对于不必要数据的传输,提高网络请求和数据传输的效率。相较于传统的restful风格api,graphql更为灵活和高效。在这篇文章中,我们将探讨…

    编程技术 2025年3月7日
    200
  • 使用PHP和Three.js创建3D可视化应用程序

    随着互联网技术不断的发展,web应用程序的需求已经不仅仅局限于传统的2d页面展示和数据交互,现在有越来越多的应用需要使用3d可视化技术来呈现数据和场景,如3d游戏、3d建模、物理模拟等。 在这篇文章中,我们将介绍如何使用PHP和Three.…

    编程技术 2025年3月7日
    200
  • 在PHP中如何进行数据可视化?

    随着数据的日益增长,数据可视化已经成为了现代web应用程序不可或缺的一个功能。而在php这门服务器脚本语言中,如何进行数据可视化呢?下面将介绍一些php中的数据可视化技术和工具。 一、使用图表库进行数据可视化 在PHP中实现数据可视化的其中…

    编程技术 2025年3月7日
    200
  • PHP商城开发框架和技术的最新更新

    随着电商的蓬勃发展,电商平台的开发也日益成为了it行业的热门话题。php商城开发框架和技术是现今电商平台开发中不可或缺的部分,随着大量消费者在线购物的需求,php商城开发框架和技术的发展也迅速加快,为电商平台的顺利运营提供了重要的支持。接下…

    编程技术 2025年3月7日
    200
  • PHP8.0中的Guzzle库

    近期,php开发者们又迎来了一位新伙伴——guzzle 7.0。guzzle作为一个http客户端库,受到了不少php程序员的欢迎和使用。而今,随着php8.0的发布,guzzle库也以全新的姿态出现在了我们的视野中。 本文将主要介绍PHP…

    编程技术 2025年3月7日
    200
  • PHP商城开发中的扩展性设计和最新的开发技术

    在现代互联网时代,电子商务已经成为了一种普及的经济模式。在这样一个背景下,php商城的开发成为了一个深受欢迎的领域。然而,php商城开发可能面临的一个最大问题就是扩展性设计。如何设计出高扩展性的php商城成为了一个让开发者们头痛的问题。 在…

    编程技术 2025年3月7日
    200

发表回复

登录后才能评论