ElasticSearch是一个基于Lucene的稳定的、分布式、RESTFul的搜索引擎。其实所谓的RestFul就是它提供URL供你调用(建立索引和进行检索),不过直接这样使用实在是太凶残了。所以,它也提供了一系列client包,相当于将curl请求封装了,client包支持的语言包括Java、PHP、Python、Ruby和Perl等等。 PHP版的client包叫做elasticsearch-php,可以在Git_hub上下载。 要使用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的文件,文件内容为: [html] view plaincopy { "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] view plaincopy 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!” 查询成功,可以看到返回的结果数组。$rtncount;$i++){>
为了支持高可用性与高伸缩性,elasticsearch本身就是分布式设计的。从顶层的角度来说,elasticsearch在索引(或者集合) 中保存文档(或者数据记录),每个集合又分解为多个小块,称为分片。索引越大,所需要分配的分片越多(不必担心会创建过多的分片,它的开销很小)。取决于 elasticsearch的设置和规模,分片会在集群中均匀地平均分布,有两个原因: 出于冗余方面的原因:默认情况下,elasticsearch为每个分片都准备了一份拷贝,一旦某个节点停机了,备份的分片就能接替它的位置。 出于性能方面的原因:每个查询都发生在某个索引上,并且会在多个分片中并行运行,这种工作流方式是改善性能的关系所在。如果感觉运行速度缓慢,只需简单地在集群中加入新的机器,elasticsearch就会自动地将分片与查询进行分布到新添加的机器上。 这种方式让使用elasticsearch的组织可以自由选择进行纵向扩展(如果节点运行缓慢就升级硬件)或者横向扩展(如果集群整体速度慢就加入更多的节点)。
Photoshop|
Dreamweaver|
SVG|
WebGL|
Visual Studio|
PowerDesigner|
Eclipse|
Git|
Apache Ant|
Atom|
Composer|
CodeSmith|
Flex|
Gradle|
Maven|
Sublime Text3|
SVN|
Tableau|
Vim|
Chrome开发者工具|
OpenGL|
Unity|
Direct3D|
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....