当前位置:

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

php elasticsearch,PHP ElasticSearch的使用

系统是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高级消息队列,说白了就是一个开源的消息中间件.它能解决 ...

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
编程开发
相关文章 更多
C++动态数组初始化怎么写?常用语句与代码示例
C++动态数组初始化怎么写?常用语句与代码示例

深入解析C++中动态数组的初始化机制,涵盖new操作符的不同用法、基本类型与类对象的初始化差异,以及为何在现代C++开发中应优先使用std::vector。

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

Linux服务器上ThinkPHP如何进行备份
Linux服务器上ThinkPHP如何进行备份

在Linux服务器上,若要使用ThinkPHP框架进行备份,一般会涉及到以下这些方面:数据库备份:使用mysqldump或mysql命令行工具来备份数据库。示例命令:mysqldump -u username -p database_name > backup_database.sql这将生成一个S

Linux服务器上PHP错误日志如何查看
Linux服务器上PHP错误日志如何查看

在Linux服务器上查看PHP错误日志的方法如下:首先,得找到PHP错误日志文件所在的位置。一般来说,它会在/var/log/php或者/var/log/apache2目录下。当然啦,你也可以通过下面这个命令来找到它:php --ini在输出的信息中,找到"ErrorLog"一行,它会显示错误日志文

如何配置PHP以支持Linux下的SSL
如何配置PHP以支持Linux下的SSL

在Linux系统下配置PHP以支持SSL,通常需要以下几个步骤:1. 安装PHP和SSL模块首先,确保你已经安装了PHP以及相关的SSL模块。你可以使用包管理器来安装这些软件包。在Debian/Ubuntu上:sudo apt updatesudo apt install php php-ssl在C

PHP在Linux下如何配置MySQL连接
PHP在Linux下如何配置MySQL连接

在Linux下配置PHP连接MySQL,你需要确保已经安装了PHP和MySQL,并且它们都在运行。接下来,请按照以下步骤操作:安装PHP MySQL扩展:对于PHP 7.x,你需要安装php-mysql扩展。在终端中运行以下命令:sudo apt-get updatesudo apt-get ins

如何配置PHP-FPM以提升网站响应速度
如何配置PHP-FPM以提升网站响应速度

想要通过配置PHP-FPM(FastCGI进程管理器)来加快网站响应速度,需要从多个方面入手,比如调整进程管理参数、优化PHP代码、启用OPcache等等。下面就为大家详细介绍一些关键步骤和实用建议。1. 调整PHP-FPM进程管理参数1.1 增加进程数根据服务器的CPU和内存资源,适当增加PHP-

Linux服务器上PHP如何配置
Linux服务器上PHP如何配置

手把手教你在Linux服务器上配置PHP一 安装与基础检查更新索引并安装所需组件(以 Ubuntu/Debian 为例):安装 Web 与 PHP:sudo apt update && sudo apt install nginx php-fpm php-mysql php-cli php-gd p

Veitool后台框架系统-ThinkPHP版 v2.3.5 已经发布
Veitool后台框架系统-ThinkPHP版 v2.3.5 已经发布

Veitool后台框架ThinkPHP版v2.3.5发布,核心升级至ThinkPHP8.1.4,性能与兼容性提升。集成JWT认证,自动生成令牌及RSA密钥对;新增可选RSA加密传输,增强数据安全;fileLibrary增加复制所选文件链接功能。

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

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

Windows
Windows

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

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。