当前位置:

首页 > 编程开发 > php elasticsearch,PHP ElasticSearch的使用

php elasticsearch,PHP ElasticSearch的使用

PhpStorm macOS版
PhpStorm macOS版

PhpStorm 是 JetBrains 推出的专业 PHP 集成开发环境,可在 Mac 上完成代码编写、智能检查、重构、调试、测试和数据库管理。它支持主流 PHP 框架、Composer、Git、Docker 与远程解释器。

立即下载
¥890
Mac 2026-10-13
数据库 编程开发 phpstorm 服务器管理 集成开发环境

系统是Windows server 2003。 说到ElasticSearch,很多开发者都知道,它是一个基于Lucene构建的、稳定且分布式的RESTful搜索引擎。这里提到的RESTful,说白了就是它直接提供了一系列URL接口,让你可以通过HTTP调用来建立索引和进行检索。当然,直接对着URL

本文目录

    系统是Windows server 2003。

    说到ElasticSearch,很多开发者都知道,它是一个基于Lucene构建的、稳定且分布式的RESTful搜索引擎。这里提到的RESTful,说白了就是它直接提供了一系列URL接口,让你可以通过HTTP调用来建立索引和进行检索。当然,直接对着URL“硬编码”调用,对大多数人来说操作起来还是太“原始”了。好在,官方贴心地提供了多种语言的客户端包,相当于把底层的curl请求给封装好了,用起来就顺手多了。这些客户端支持Ja va、PHP、Python、Ruby和Perl等主流语言,覆盖面很广。

    我们今天重点聊聊PHP版的客户端,也就是elasticsearch-php。这个包在GitHub上就能找到,地址是:https://github.com/elasticsearch/elasticsearch。

    那么,要在项目里用上elasticsearch-php,需要满足哪几个前提条件呢?主要有三条:

    1. PHP版本需要在5.3.9以上。以我这次的环境为例,用的是PHP 5.3.23,是满足要求的。 2. 项目需要使用Composer来进行依赖包管理。如果你还没安装Composer,可以去 https://getcomposer.org/ 下载。 3. 别忘了在php.ini配置文件中,确保curl和openssl这两个扩展是开启状态。

    另外,运行Elasticsearch服务本身,还需要JDK环境。建议JDK版本不低于6,稳妥起见,直接上8更好,毕竟7版本存在一些已知的安全漏洞。

    下面这张图,清晰地列出了搭建这个环境所需的核心组件,可以对照参考:

    5b4968ce3c817de837bb2d6d40f18555.png

    启动Elasticsearch服务的过程倒是非常简单。进入解压后的目录,直接运行里面的 `elasticsearch.bat` 批处理文件就行。当你看到控制台最后输出“start”字样时,就说明服务已经成功启动了。

    接下来,才是重头戏:如何使用elasticsearch-php客户端。我们一步步来:

    1. 首先,新建一个项目文件夹,比如就叫 `test`。 2. 在这个文件夹里,创建一个名为 `composer.json` 的文件,内容如下: { "require":{ "elasticsearch/elasticsearch" : "~1.2" } } 3. 把下载好的 `composer.phar` 文件也拷贝到 `test` 文件夹里。然后打开命令行,切换到 `test` 目录,执行命令:php composer.phar install --no-dev。稍等片刻,等待安装完成。 安装成功后,你会看到 `test` 文件夹下生成了一个 `vendor` 目录,里面包含了elasticsearch、composer、guzzle等一系列依赖包。 4. 环境准备就绪,现在可以编写代码来建立索引和进行检索了。下面是一个完整的示例代码:

    require_once('vendor/autoload.php');
    
    function get_conn(){
        $host = 'ip';
        $dbname = 'dbname';
        $user = 'user';
        $passwd = 'passwd';
        $conn = new PDO("pgsql:dbname=$dbname;host=$host",$user,$passwd);
        return $conn;
    }
    
    function create_index(){
        //Elastic search php client
        $client = new Elasticsearch\Client();
        $sql = "SELECT * FROM log";
        $conn = get_conn();
        $stmt = $conn->query($sql);
        $rtn = $stmt->fetchAll();
    
        //delete index which already created
        $params = array();
        $params['index'] = 'log_index';
        $client->indices()->delete($params);
    
        //create index on log_date,src_ip,dest_ip
        $rtnCount = count($rtn);
        for($i=0;$i<$rtnCount;$i++){
            $params = array();
            $params['body'] = array(
                'log_date' => $rtn[$i]['log_date'],
                'src_ip' => $rtn[$i]['src_ip'],
                'dest_ip' => $rtn[$i]['dest_ip']
            );
            $params['index'] = 'log_index';
            $params['type'] = 'log_type';
            //Document will be indexed to log_index/log_type/autogenerate_id
            $client->index($params);
        }
        echo 'create index done!';
    }
    
    function search(){
        //Elastic search php client
        $client = new Elasticsearch\Client();
        $params = array();
        $params['index'] = 'log_index';
        $params['type'] = 'log_type';
        $params['body']['query']['match']['src_ip'] = '1.122.33.141';
        $rtn = $client->search($params);
        var_dump($rtn);
    }
    
    set_time_limit(0);
    //create_index();
    search();
    

    运行这段代码,如果建立索引成功,页面会输出“create index done!”。而执行搜索功能后,则会打印出匹配查询条件的详细结果数组。这样一来,从环境搭建到基础增删改查的完整链路就跑通了。

    Elasticsearch之ja va的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

    Elasticsearch 5.0 中term 查询和match 查询的认识

    Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...

    以bank account 数据为例,认识elasticsearch query 和 filter

    Elasticsearch 查询语言(Query DSL)认识(一) 一.基本认识 查询子句的行为取决于 query context filter context 也就是执行的是查询(query)还是 ...

    Ubuntu 14.04中Elasticsearch集群配置

    Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...

    ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request...

    ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

    .net Elasticsearch 学习入门笔记

    一. es安装相关1.elasticsearch安装 运行http://localhost:9200/2.head插件3.bigdesk插件安装(安装细节百度:windows elasticsear ...

    自己写的数据交换工具——从Oracle到Elasticsearch

    先说说需求的背景,由于业务数据都在Oracle数据库中,想要对它进行数据的分析会非常非常慢,用传统的数据仓库-->数据集市这种方式,集市层表会非常大,查询的时候如果再做一些group的操作,一个 ...

    如何在Elasticsearch中安装中文分词器(IK+pinyin)

    如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题--中文词语被分成了一个一个的汉字,当用Kibana作图的时候,按照term来分组,结果一个汉字被分成了一组. ...

    jar hell & elasticsearchik版本问题

    想给es 安装一个ik 的插件, 我的es 是 2.4.0, 下载了一个版本是 1.9.5, [2016-10-09 16:56:26,248][INFO ][node ] [node-2] init ...

    随机推荐

    geotrellis使用(二十八)栅格数据色彩渲染(多波段真彩色)

    目录 前言 实现过程 总结 一.前言 上一篇文章介绍了如何使用Geotrellis渲染单波段的栅格数据,已然很是头疼,这几天不懈努力之后工作又进了一步,整清楚了如何使用Geotrelli ...

    Win10 无法完全关机问题

    Win10是重新安装的.开机运行时间长了或者跑的东西多了.关机,键盘灯还是亮的,要强制按电源键关机才行. 问题解决:从网上搜以为是显卡驱动问题,上官网更新最新驱动,结果还是关不了机.偶然间搜到是Int ...

    php 利用activeMq+stomp实现消息队列

    php 利用activeMq+stomp实现消息队列 一.activeMq概述 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J ...

    InfiniBand技术简介

    InfiniBand技术简介 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 随着CPU和通讯处理速度的 ...

    C/C++变量命名规则

    变量命名规则是为了增强代码的可读性和easy维护性. 变量命名规则: 一.用最短字符表示最准确的意义. 二.使用变量前缀. 1. 整型前缀 int nId; ...

    AngularJS初步

    AngularJS特点 遵循AMD规范 不需要操作节点 对于jquery,一般是利用现有完整的DOM,然后在这戏Dom的基础上进行二次调教了:而对于AngularJS等框架则是根据数据模型以及其对应用 ...

    Python rich comparisons 自定义对象比较过程和返回值

    Classes wishing to support the rich comparison mechanisms must add one or more of the following new...

    how2heap学习笔记

    github源代码地址 这里只分析glibc2.25堆分配的特性,为了方便调试编译时使用 gcc -g -no-pie-o

    python(41):copy拷贝(深拷贝deepcopy与浅拷贝copy)

    Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1.copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2.copy.deepco ...

    rabbitmq系列(一)-基本概念理解

    1.简介 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue protocol)的开源实现.AMQP高级消息队列,说白了就是一个开源的消息中间件.它能解决 ...

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 PHP
    相关文章 更多
    php怎么连接数据库mysql完整代码与操作步骤
    php怎么连接数据库mysql完整代码与操作步骤

    详细介绍如何使用PHP PDO扩展连接MySQL数据库,包含完整的代码示例、DSN配置方法及异常处理技巧,帮助开发者快速建立稳定安全的数据库连接。

    PHP递归遍历目录文件:RecursiveDirectoryIterator与自定义实现
    PHP递归遍历目录文件:RecursiveDirectoryIterator与自定义实现

    深入解析在PHP中递归遍历多级目录文件的两种核心方案:基于SPL标准库的RecursiveDirectoryIterator高效流式迭代,与基于scandir/opendir的自定义递归函数实现,剖析执行机制、内存表现与实战避坑指南。

    解决PHP递归报错:max_nesting_level限制与内存溢出处理
    解决PHP递归报错:max_nesting_level限制与内存溢出处理

    遇到PHP递归报错时,不要盲目调大max_nesting_level。本文教你区分Xdebug限制、内存耗尽和正则递归错误,提供代码级的终止条件优化与迭代替代方案,彻底解决栈溢出问题。

    PHP递归中static变量与引用传递的常见陷阱及调试
    PHP递归中static变量与引用传递的常见陷阱及调试

    本文分析PHP递归中static变量导致的状态污染及引用传递引发的共享数据修改问题。提供具体的代码复现、缓存键设计建议及调试打印技巧,帮助开发者避免隐蔽的逻辑错误。

    PHP递归性能优化技巧与迭代替代方案
    PHP递归性能优化技巧与迭代替代方案

    解析PHP递归函数在树形数据处理中的性能瓶颈,提供预加载数据消除I/O、使用显式栈替代深层递归的实战方案,帮助开发者在代码可读性与执行效率间做出合理取舍。

    thinkphp项目部署指南详解服务器部署步骤
    thinkphp项目部署指南详解服务器部署步骤

    详细解析ThinkPHP项目在Linux服务器上的部署步骤,包括环境搭建、文件权限、Nginx配置及常见陷阱,提供可复制的代码示例与例外场景分析。

    PHP发送HTTP请求的方法及完整代码教程
    PHP发送HTTP请求的方法及完整代码教程

    详解PHP中发送HTTP请求的常用方法,包括原生cURL配置、file_get_contents流操作及Guzzle库的使用,提供GET/POST请求的完整代码示例与注意事项。

    php解析json内嵌json数据教程及取值方法
    php解析json内嵌json数据教程及取值方法

    本文详解PHP中json_decode处理嵌套JSON数据的机制,对比对象与数组模式的取值差异,提供防止空指针错误的健壮代码示例,帮助开发者快速定位解析失败原因。

    PHP 在 2026 年还适用吗?
    PHP 在 2026 年还适用吗?

    PHP在2026年仍适用于现代网站构建,在常规Web服务和内容密集型站点中较Python、Java等保持优势。其JIT编译优化性能,安全补丁及时,全面支持云原生,拥有成熟框架生态,整体成本较低。

    DebianPHP如何SSL加密
    DebianPHP如何SSL加密

    在Debian系统上为PHP配置SSL加密,通常涉及以下几个步骤:安装SSL证书:首先,你需要一个SSL证书。你可以从Let’s Encrypt免费获取,或者购买一个商业证书。使用Let’s Encrypt:sudo apt updatesudo apt install certbotsudo ce

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?