PHP ElasticSearch的使用
系统是Windows server 2003。
ElasticSearch是一个基于Lucene的稳定的、分布式、RESTFul的搜索引擎。其实所谓的RestFul就是它提供URL供你调用(建立索引和进行检索),不过直接这样使用实在是太凶残了。所以,它也提供了一系列client包,相当于将curl请求封装了,client包支持的语言包括Java、PHP、Python、Ruby和Perl等等。
PHP版的client包叫做elasticsearch-php,可以在Git_hub上下载。地址如下:https://github.com/elasticsearch/elasticsearch
要使用elasticsearch-php有如下三个要求:
1.PHP的版本在5.3.9以上,我用的是PHP5.3.23
2.在项目中使用Composor来管理包,下载地址如下:https://getcomposer.org/
3.在php.ini中开启curl和openssl
要使用elasticsearch,需要JDK的版本大于6,最好选择8吧,因为7有漏洞....
截一张需要的包图:
启动elasticsearch很简单,直接进入解压目录,运行elasticsearch.bat就可以了,看到最后console输出start,就启动成功了。
接下来介绍如何使用elasticsearch-php:
1.新建一个文件夹取名为test,此为项目文件夹
2.在里面放入一个命名为composer.json的文件,文件内容为:
- {
- "require":{
- "elasticsearch/elasticsearch" : "~1.2"
- }
- }
3.将composer.phar拷贝到test文件夹中,cd 到test文件夹,输入命令:php composer.phar install --no-dev 等待安装成功
这个时候test文件夹下面应该会出现vendor文件夹,里面有elasticsearch、composer、guzzle等文件夹,很多内容
4.这个时候,就可以使用elasticsearch进行建立索引和进行检索了
- <?php
- 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!”
查询成功,可以看到返回的结果数组。
PHP ElasticSearch的使用的更多相关文章
- Elasticsearch之java的基本操作一
摘要 接触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 & elasticsearch ik 版本问题
想给es 安装一个ik 的插件, 我的es 是 2.4.0, 下载了一个版本是 1.9.5, [2016-10-09 16:56:26,248][INFO ][node ] [node-2] init ...
随机推荐
- [转]NopCommerce之旅: 应用启动
本文转自:http://www.cnblogs.com/devilsky/p/5359881.html 我的NopCommerce之旅(6): 应用启动 一.基础介绍 Global.asax 文件 ...
- NOIP2006金明的预算方案[DP 有依赖的背包问题]
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今 ...
- maven-安装配置
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. maven是什么maven这个词可以翻译为“知识的积累”,也可以翻译为“专家”或“内行” ...
- [No000029]程序员的那些事儿 -- 皆大欢喜的加薪
我的朋友A君是个典型的.NET开发人员,技术不错,人品也不错,在一家小公司(姑且称为甲公司)做项目开发,是技术骨干. 3个月前,他找到我说想跳槽,让我帮忙介绍工作.我说为什么想跳了? 1. 为什么想离 ...
- UIScrollView解决无法触发手势
//创建一个分类 //.h #import <UIKit/UIKit.h> @interface UIScrollView (Touch) - (void)touchesBegan:(NS ...
- JavaScript Date对象 日期获取函数
JavaScript Date对象使用小例子: 运行结果: 总结: 1.尽管我们认为12月是第12个月份,但是JavaScript从0开始计算月份,所以月份11表示12月: 2.nowDate.set ...
- java多线程系类:基础篇:05线程的等待与唤醒
概要 本章,会对线程等待/唤醒方法进行介绍.涉及到的内容包括:1. wait(), notify(), notifyAll()等方法介绍2. wait()和notify()3. wait(long t ...
- Java集合系列:-----------06List的总结(LinkedList,ArrayList等使用场景和性能分析)
现在,我们再回头看看总结一下List.内容包括:第1部分 List概括第2部分 List使用场景第3部分 LinkedList和ArrayList性能差异分析第4部分 Vector和ArrayList ...
- 实现路由的RouterMiddleware中间件
实现路由的RouterMiddleware中间件 虽然ASP.NET Core应用的路由是通过RouterMiddleware这个中间件来完成的,但是具体的路由解析功能都落在指定的Router对象上, ...
- Linux shell循环
条件测试 格式 test condition 或 [ condition ] 使用方括号时,要注意在条件两边加上空格,如果有操作符,运算符之间也必须有空格 测试状态:测试的结果可以用$?的值来判断,0 ...