如何在Workerman中使用ElasticSearch进行数据存储与搜索

如何在workerman中使用elasticsearch进行数据存储与搜索

在Web开发中,数据存储搜索是非常重要的一部分。ElasticSearch是一个开源的分布式搜索引擎,被广泛应用于数据搜索和分析。它能够处理大量数据并提供高效的搜索和聚合功能。Workerman是一款高性能的PHP socket框架,适用于开发实时通信、在线游戏和高并发Web服务等应用。在本文中,我们将介绍如何在Workerman中使用ElasticSearch进行数据存储与搜索。

ElasticSearch安装与配置

在开始之前,我们需要先安装和配置ElasticSearch。可以在ElasticSearch的官方网站https://www.elastic.co/downloads/elasticsearch下载最新的安装包,根据操作系统类型进行安装。安装完成后,可以通过以下命令来启动ElasticSearch:

$ cd elasticsearch/bin$ ./elasticsearch

同时,我们还可以在config/elasticsearch.yml文件中进行ElasticSearch的配置,比如设置监听端口、集群名称和数据存储路径等。

Workerman的安装与配置

在使用Workerman之前,我们需要先安装和配置它。可以通过在终端中输入以下命令来安装Workerman:

$ composer require workerman/workerman

安装完成后,我们需要创建一个PHP脚本文件,并在其中引入Workerman的Autoloader类,并添加以下代码来启动Workerman:

    require_once __DIR__ . '/vendor/autoload.php';    use WorkermanWorker;    $worker = new Worker();    $worker->count = 4;    $worker->onWorkerStart = function($worker){      // do something    };    Worker::runAll();

在上述代码中,我们创建了一个Worker对象,并设置了进程数为4。同时,我们还通过onWorkerStart回调函数来定义了Worker进程启动时的行为。

ElasticSearch中数据的增删查改

在Workerman中使用ElasticSearch进行数据存储与搜索,我们需要掌握ElasticSearch中数据的增删查改操作,具体操作如下所示:

a. 数据的创建

在ElasticSearch中,数据的创建是通过对指定索引和文档类型的HTTP PUT请求完成的,可以使用以下代码来创建数据:

curl -XPUT http://localhost:9200/{index}/{type}/{id} -d '{  "title":"ElasticSearch tutorial",  "tags":["search","elasticsearch"],  "body":"ElasticSearch is a powerful search engine."}'

当然,我们也可以使用PHP代码来完成数据的创建:

$client = ElasticsearchClientBuilder::create()->build();$params = [    'index' => 'my_index',    'type' => 'my_type',    'id' => 'my_id',    'body' => [        'title' => 'ElasticSearch tutorial',        'tags' => ['search', 'elasticsearch'],        'body' => 'ElasticSearch is a powerful search engine.'    ]];$response = $client->index($params);

b. 数据的查询

在ElasticSearch中,数据的查询分为精确查询和模糊查询两种方式。其中,精确查询是指通过指定字段和值来查找数据,而模糊查询是指通过模糊匹配来查找数据。可以使用以下代码来完成数据的查询:

// 精确查询$client = ElasticsearchClientBuilder::create()->build();$params = [    'index' => 'my_index',    'type' => 'my_type',    'body' => [        'query' => [            'match' => [                'title' => 'ElasticSearch tutorial'            ]        ]    ]];$response = $client->search($params);// 模糊查询$client = ElasticsearchClientBuilder::create()->build();$params = [    'index' => 'my_index',    'type' => 'my_type',    'body' => [        'query' => [            'wildcard' => [                'title' => '*search*'            ]        ]    ]];$response = $client->search($params);

c. 数据的更新

在ElasticSearch中,数据的更新操作是通过对指定索引和文档类型的HTTP POST请求完成的,可以使用以下代码来更新数据:

curl -XPOST http://localhost:9200/{index}/{type}/{id}/_update -d '{  "doc":{    "title":"New ElasticSearch tutorial"  }}'

当然,我们也可以使用PHP代码来完成数据的更新:

$client = ElasticsearchClientBuilder::create()->build();$params = [    'index' => 'my_index',    'type' => 'my_type',    'id' => 'my_id',    'body' => [        'doc' => [            'title' => 'New ElasticSearch tutorial'        ]    ]];$response = $client->update($params);

d. 数据的删除

在ElasticSearch中,数据的删除操作是通过对指定索引和文档类型的HTTP DELETE请求完成的,可以使用以下代码来删除数据:

curl -XDELETE http://localhost:9200/{index}/{type}/{id}

当然,我们也可以使用PHP代码来完成数据的删除:

$client = ElasticsearchClientBuilder::create()->build();$params = [    'index' => 'my_index',    'type' => 'my_type',    'id' => 'my_id'];$response = $client->delete($params);

Workerman中的ElasticSearch示例

通过上述操作,我们已经掌握了在ElasticSearch中进行数据存储与搜索的基本操作。接下来,我们将在Workerman中实现一个使用ElasticSearch进行数据存储与搜索的示例,具体代码如下所示:

require_once __DIR__ . '/vendor/autoload.php';use WorkermanWorker;use ElasticsearchClientBuilder;// 创建一个Worker对象$worker = new Worker();$worker->count = 4;// 启动一个ElasticSearch客户端$client = ClientBuilder::create()->build();// 处理连接请求$worker->onConnect = function($connection) {    echo "New connection from " . $connection->getRemoteIp() . PHP_EOL;};// 处理数据请求$worker->onMessage = function($connection, $data) use($client) {    $params = [        'index' => 'my_index',        'type' => 'my_type',        'body' => [            'query' => [                'wildcard' => [                    'title' => '*' . $data . '*'                ]            ]        ]    ];    // 从ElasticSearch检索数据    $response = $client->search($params);    // 处理检索结果    $hits = $response['hits']['hits'];    if(count($hits) > 0) {        $result = 'Results:' . PHP_EOL;        foreach($hits as $hit) {            $result .= $hit['_source']['title'] . PHP_EOL;        }    } else {        $result = 'No results found.' . PHP_EOL;    }    // 发送结果给客户端    $connection->send($result);};Worker::runAll();

在上述代码中,我们首先启动一个ElasticSearch客户端,并创建一个Worker对象来处理连接和数据请求。当有客户端连接进来后,在接收到数据请求时,我们从ElasticSearch中检索数据,并将结果发送给客户端。

总结

本文介绍了如何在Workerman中使用ElasticSearch进行数据存储与搜索。通过掌握ElasticSearch中数据的增删查改操作,我们可以快速地在Web应用中进行数据的存储和搜索。同时,我们也在Workerman中实现了一个简单的ElasticSearch应用,以便更好地理解和运用上述操作。

以上就是如何在Workerman中使用ElasticSearch进行数据存储与搜索的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月1日 06:05:25
下一篇 2025年11月1日 06:06:19

相关推荐

  • 如何html转化URL_将HTML文件或内容转换为URL链接【链接】

    需将HTML转为可访问URL,必须部署到HTTP服务器:一、本地开发服务器(如python -m http.server);二、GitHub Pages永久托管;三、htmlpreview在线预览;四、云存储静态托管;五、data URL编码内联。 如果您拥有一个HTML文件或一段HTML内容,需要…

    2025年12月23日
    000
  • HTML元素拼写错误与CSS样式失效:深入解析及解决方案

    本文深入探讨了因html标签拼写错误(如将`div`误写为`dev`)导致css样式不生效的常见问题。通过详细分析错误原因、提供正确的html结构和css实现方案,特别是针对创建带有背景色和特定高度的动态文本横幅场景,旨在帮助开发者理解并避免此类低级错误,同时掌握实现响应式横幅布局的css技巧。 在…

    2025年12月23日
    000
  • 如何在网页中正确引用图片:避免绝对路径问题

    针对网页开发中图片无法显示的问题,本文详细讲解了图片引用时应避免使用本地绝对路径,并强调了采用相对路径和合理项目文件结构的重要性。通过示例代码,指导开发者如何将图片正确放置于项目文件夹内,并使用相对路径进行引用,确保图片在浏览器中正常加载和显示,提升开发效率与项目可移植性。 在网页开发中,图片是不可…

    2025年12月23日
    000
  • 使用 Jinja2 动态渲染多张图片到 HTML 文件的完整教程

    本教程详细介绍了如何利用 jinja2 模板引擎,通过 python 代码动态地将多张图片加载并渲染到 html 文件中。核心方法是构建一个包含图片元数据的列表字典作为数据源,并结合 jinja2 的 `for` 循环结构遍历数据,从而高效生成包含多张图片的 html 内容。 在 Web 开发中,经…

    2025年12月23日 好文分享
    000
  • HTML文档标题怎么设置_HTML标题标签使用教程

    浏览器标签页显示的标题由标签定义,位于中,是页面的“名片”;而到标签用于构建页面内容结构,属于“骨架”。前者影响SEO和用户体验,后者定义内容层级。应合理使用提升点击率,用H标签组织内容而非仅靠加粗视觉效果。HTML5允许多个在不同分节元素内使用,但为兼容性和清晰性,建议一个页面只保留一个作为主标题…

    2025年12月23日
    100
  • HTML注释符号是什么_HTML注释开始和结束标记详解

    HTML注释以结束,用于添加备注或禁用代码,浏览器会忽略其内容。1. 主要用途包括:解释代码、调试时临时禁用元素、团队协作沟通、标记页面区域及隐藏未完成内容。2. 注释不可嵌套,否则会导致解析错误,应避免在注释内使用–>或 HTML注释符号是以 <!– 开始,并以 –&g…

    2025年12月22日
    000
  • HTML标题分组怎么实现_HTML的hgroup标签使用教程

    核心实现方式是使用标签将主标题与辅助性标题或标语进行语义分组,使其在文档结构中作为一个逻辑单元被识别,提升页面的语义清晰度、无障碍访问体验及搜索引擎理解能力。 HTML标题分组的核心实现方式是利用 标签。它允许你将一个主标题(如 到 中的任意一个)与一个或多个辅助性标题、副标题或标语关联起来,共同构…

    2025年12月22日 好文分享
    000
  • HTML注释会影响页面加载吗_注释对页面性能的影响分析

    HTML注释会增加文件体积并消耗解析资源,影响页面性能。首先,注释增加HTML文件大小,导致下载时间延长,尤其在弱网环境下影响更明显;其次,浏览器解析时需处理注释并生成Comment节点,耗费CPU资源。尽管现代压缩技术可减小其影响,但在高流量、极致性能或低端设备场景下,累积效应仍不可忽视。为平衡可…

    2025年12月22日
    000
  • HTML代码优化:提升网页加载速度的最佳实践

    如果您的网页加载速度缓慢,影响用户体验和搜索引擎排名,可能是由于HTML代码结构不合理或资源加载效率低下所致。以下是优化HTML代码以提升网页加载速度的具体操作步骤: 一、精简HTML文档结构 减少嵌套层级和无意义标签可以降低解析时间,使浏览器更快渲染页面内容。 1、删除多余的 和标签,确保每个元素…

    2025年12月22日
    000
  • HTML文档列表怎么创建_HTML有序无序列表使用教程

    无序列表()适用于项目顺序无关的场景,如产品特性、导航菜单等;有序列表()用于强调顺序的内容,如步骤、排名;两者结合标签可实现语义化、可访问性强的结构,嵌套使用能清晰表达层级关系,避免仅用列表实现样式效果,确保HTML结构正确与可维护性。 HTML文档中创建列表的核心,在于使用 (无序列表)和 (有…

    2025年12月22日
    000
  • HTML文档导航怎么创建_HTMLnav标签使用教程

    使用标签构建语义化导航,结合CSS美化与JavaScript实现响应式交互,并通过ARIA属性和描述性链接文本提升可访问性与SEO。 HTML文档导航的创建,核心在于使用 标签来明确定义页面上的导航区域,并配合 、 、 等标签构建导航链接。这样既能提升语义化,也有利于搜索引擎优化和辅助技术访问。 解…

    2025年12月22日
    000
  • HTML富媒体怎么优化_视频音频内容SEO优化指南

    答案:HTML富媒体优化通过结构化数据、字幕、站点地图等手段提升视频音频内容的搜索引擎可见性与用户体验。 HTML富媒体优化,简单来说,就是让你的视频、音频内容更容易被搜索引擎找到,从而吸引更多流量。核心在于让这些非文本内容也能被“理解”。 解决方案: HTML富媒体的优化策略,其实围绕着“让搜索引…

    2025年12月22日
    000
  • SessionStorage:数据存储的能力和支持的数据类型

    探索 SessionStorage 的功能:它可以存储什么类型的数据? SessionStorage 是 HTML5 中提供的一种客户端存储方式,可以用来在客户端存储数据,且只在当前会话期间有效。与 Cookie 类似,但 SessionStorage 拥有更大的存储容量,并且不会随着 HTTP 请…

    2025年12月21日
    000
  • 有效防止Localstorage数据丢失的方法

    如何避免Localstorage数据丢失? 随着Web应用程序的发展,数据的持久化成为了一个重要的问题。而Localstorage是一种非常常用的浏览器提供的数据持久化方案。但是,由于各种原因,LocalStorage中存储的数据有可能会丢失。本文将介绍几种避免LocalStorage数据丢失的方法…

    好文分享 2025年12月21日
    000
  • 优化localstorage数据存储的最佳实践

    使用localStorage存储数据的最佳实践 在现代Web开发中,本地存储是一项非常重要的技术。其中一种常用的本地存储机制是使用localStorage。localStorage是HTML5提供的一种在客户端保存数据的方法,它可以在浏览器中长期存储数据,不受浏览器关闭或页面刷新的影响。本文将介绍使…

    2025年12月21日
    000
  • localstorage的应用场景:它的功能有哪些?

    了解localstorage的主要应用:它能为我们做什么? 当今互联网时代,数据的存储和管理对于应用程序的开发至关重要。传统的方式包括使用数据库或服务器来存储数据,但随着前端技术的发展,我们现在还可以使用本地存储(localstorage)来实现数据的存储和管理。 localstorage是HTML…

    2025年12月21日
    000
  • 学习数据存储技巧:掌握sessionstorage的使用方法

    如何使用SessionStorage:快速掌握数据存储技巧 SessionStorage是一种用于在浏览器中临时存储数据的Web API。它提供了一种简单方便的方法,以便我们能够在用户会话期间将数据存储在浏览器中。本文将介绍如何使用SessionStorage,并提供具体的代码示例,帮助读者快速掌握…

    2025年12月21日
    000
  • 为什么localstorage无法成功保存数据?

    存储数据到localstorage为何总是失败?需要具体代码示例 在前端开发中,我们经常需要将数据存储在浏览器端,以便提高用户体验和方便之后的数据访问。Localstorage是HTML5提供的一项用于客户端存储数据的技术,它提供了一种简单的方法来存储数据,并且可以在页面刷新或关闭后保持数据的持久化…

    2025年12月21日
    000
  • 提高数据存储与管理效率,掌握localStorage技巧

    掌握localStorage的技巧,优化数据存储与管理 引言:在现代的Web开发中,数据的存储和管理是一个非常重要的问题。localStorage是HTML5提供的一种本地存储方案,它可以在浏览器中保存键值对的数据,使得我们可以方便地在不同的页面间共享数据。本文将介绍如何使用localStorage…

    2025年12月21日
    000
  • 如何在JavaScript中搜索链接的目标属性的值?

    要在JavaScript中搜索链接的目标属性值,请使用target属性。您可以尝试运行以下代码以获取目标属性的值。 示例 Qries 音疯 音疯是昆仑万维推出的一个AI音乐创作平台,每日可以免费生成6首歌曲。 178 查看详情 var x = document.getElementById(“qri…

    2025年12月21日 好文分享
    000

发表回复

登录后才能评论
关注微信