YYDU 2017-08-16
Elasticsearch作为一个非常流行的全文检索引擎,而PHP作为中小网站的优先选择编程语言,搜索是网站或者应用常有的功能,那么PHP怎么样与Elasticsearch进行协同合作完成搜索功能?以及我们怎么样搭建关于PHP版的Elasticsearch开发环境?下面我一一为大家解密。
环境介绍
OS:Windows 7旗舰版 64位
PHP:PHP 7.1.2
MySQL:MySQL 5.5.27
Web服务器:Apache 2.4.3
PHP框架:LV框架
java环境安装
由于Elasticsearch是基于Java环境的,所以我们需要先安装Java环境,可以采用下面的步骤安装Java环境。
进入到Java的官方网站。
下载Java文件并进行安装,由于是Windows环境,所以我们仅仅需要点击下一步下一步就能够完成Java的安装。
将Java的安装路径添加到系统环境变量里,然后执行java -version,如果输出类似下面的内容,说明你的Java环境成功搭建了。
搭建Elasticsearch环境
首先进入Elasticsearch的官方网站,参考上图,我们选择下载ZIP的文件进行环境搭建,下载完文件之后,在E盘新建一个目录,用于存储该ZIP文件的解压文件,参考下图。
打开windows系统的命令窗口,然后将目录切换到上面的Elasticsearch解压目录的bin目录里面,执行elasticsearch.bat文件,就可以开启我们的Elasticsearch服务程序了,然后打开浏览器,访问http://localhost:9200,看看是否真的启动了。
搭建PHP开发环境
上面已经完成了关于Elasticsearch服务端的环境搭建,下面我们来完成关于PHP客户端环境的搭建任务。
用IDE(PhpStorm)打开LV框架,然后找到composer.json文件,在require里面添加下面的内容,然后执行php composer.phar update完成PHP开发环境的搭建。
一些基本的概念
下面的概念都是针对Elasticsearch说明的
index:类似于RDBMS里面的数据库,可以有多个数据库。
type:类似于RDBMS里面的数据表,用于存储后面的document。
document:类似于RDBMS里面的每条数据记录。
id:类似于RDBMS数据表里面的主键,只不过这里仅仅一个字段而已。
查询字段与显示字段:对于显示字段,不提倡进行搜索,仅仅用于显示数据使用,相反,对于查询字段,既可以作为搜索用,也能够作为显示用。
数据库索引和全文检索倒排索引,数据库索引一般是文档ID作为索引,文档内容作为记录,而倒排索引则相反,它以记录里面的关键词作为索引,而文档ID作为记录。
完成我的第一个简单DEMO
上面我已经搭建好了LV版本的PHP开发环境,下面我们来实现文档入库和查询的DEMO。
其他全文检索引擎介绍
其实除了Elasticsearch外,对于我们PHP程序员来说,还有其他几个常用的全文检索引擎,分别是Sphinx、Solr、迅搜等,但是对于中文分词来说,除了迅搜以为,其他几个全文检索引擎都是需要作特殊处理的。
另外一部分,则需要先做聚类、分类处理,将聚合出的分类结果存入ES集群的聚类索引中。数据处理层的聚合结果存入ES中的指定索引,同时将每个聚合主题相关的数据存入每个document下面的某个field下。