Skip to content

wlei24/PHP-Elasticsearch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PHP-Elasticsearch

一套全文检索解决方案,涉及到的技术有elasticsearch、mongodb、php、monolog等。
具体流程:

  1. PHP程序添加文章写入Mongodb中。
  2. 通过mongodb-connector同步Mongodb数据到elasticsearch中。
  3. PHP程序(elasticsearch-php)全文检索elasticsearch。

Elasticsearch准备

#####1. 安装新版 java环境
#####2. 下载 Elasticsearch
#####3. 解压压缩包

 $ unzip elasticsearch-{version}.zip

#####4. 运行elasticsearch

$ ./elasticsearch-{version}/bin/elasticsearch

#####5. 测试运行情况 守护进程模式,加-d

$ curl 127.0.0.1:9200/?pretty

Notice - 正常可以看到以下返回信息:

{
  "name" : "Martinex",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "2.2.0",
    "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe",
    "build_timestamp" : "2016-01-27T13:32:39Z",
    "build_snapshot" : false,
    "lucene_version" : "5.4.1"
  },
  "tagline" : "You Know, for Search"
}

MongoDB准备

#####1. 下载MongoDB,也可以采用以下方式进行安装(linux下)

$ brew install mongodb

#####2. 解压压缩包到某个自定义目录下 #####3. 进入解压目录,新建data目录,然后在data目录下新建db目录,用来存放mongodb数据 #####4. 进入bin目录下,启动mongod,切记命令为

$ ./mongod

首次需配置MongoDB数据存放位置

$ sudo ./mongod --dbpath /Users/wlei24/es/mongodb-osx-x86_64-3.0.0/data/db/

后面运行时可能出现

ERROR:dbpath (/data/db) does not exist.

这是由于mongod启动时没有找到mongodb.conf导致的,因此我们的启动mongodb的时候手动添加 --dbpath即可 #####5. 测试MongoDB运行情况 进入bin目录,运行 ./mongo 进入mongodb控制台,输入

$ show dbs

显示结果:

article  0.078GB
local    0.328GB

同样你可以通过 127.0.0.1:27017 访问,页面显示:

It looks like you are trying to access MongoDB over HTTP on the native driver port.

Mongo-Connector准备

#####1. 下载mongo-connector 首先需要确保你已经安装pip,否则执行以下命令

$ easy_install pip

若已安装,执行以下命令

pip install mongo-connector

同样你也可以这样安装 - 下载完成后执行sudo python setup.py install

git clone https://github.com/10gen-labs/mongo-connector.git
cd mongo-connector
python setup.py install

#####2. 确保开启MongoDB复制集

mongod --replSet myDevReplSet

接着在mongodb控制台执行 rs.initiate() #####3. 运行 mongodb-connector

mongo-connector -m 127.0.0.1:27017 -t 127.0.0.1:9200 -d elastic_doc_manager

你会惊奇发现报了一大堆的错误

No handlers could be found for logger "mongo_connector.util"
Traceback (most recent call last):
  File "/usr/local/bin/mongo-connector", line 9, in 
    load_entry_point('mongo-connector==2.3', 'console_scripts', 'mongo-connector')()
  File "/Library/Python/2.7/site-packages/mongo_connector-2.3-py2.7.egg/mongo_connector/util.py", line 85, in wrapped
    func(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/mongo_connector-2.3-py2.7.egg/mongo_connector/connector.py", line 1041, in main
    conf.parse_args()
  File "/Library/Python/2.7/site-packages/mongo_connector-2.3-py2.7.egg/mongo_connector/config.py", line 118, in parse_args
    option, dict((k, values.get(k)) for k in option.cli_names))
  File "/Library/Python/2.7/site-packages/mongo_connector-2.3-py2.7.egg/mongo_connector/connector.py", line 824, in apply_doc_managers
    module = import_dm_by_name(dm['docManager'])
  File "/Library/Python/2.7/site-packages/mongo_connector-2.3-py2.7.egg/mongo_connector/connector.py", line 814, in import_dm_by_name
    "vailable doc managers." % full_name)
mongo_connector.errors.InvalidConfiguration: Could not import mongo_connector.doc_managers.elastic_doc_manager. It could be that this doc manager has been moved out of this project and is maintained elsewhere. Make sure that you have the doc manager installed alongside mongo-connector. Check the README for a list of available doc managers.
花了大半天没有解决问题,怪自己没仔细看错误输出,偌大的错误提示-没有找到elastic_doc_manager
不过感觉mongodb-connector也有点坑,默认doc_managers里面只有solr_doc_manageir

这时就需要你去elastic2-doc-manager
将elastic2-doc-manager.py拷贝到本地doc_manaers目录
执行之前命令,发现继续报错~

IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/mongo_connector-2.3-py2.7.egg/mongo_connector/doc_managers/mongo-connector.log'

这个错误只需要根据报错信息,新建此文件,并赋予读写权限即可。
继续执行之前命令,惊奇发现已经显示正常迹象,不过随即退出。
解决此问题只需采用在命令前面加上sudo即可(意思你懂得~)

Logging to mongo-connector.log.

实际效果

添加文章效果图Mongodb存储文章形式Elasticsearch存储文章形式搜索文章标题效果搜索文章内容效果

#####参考资料:Elasticsearch权威指南mongo-connectorMongoDB数据自动同步到Elasticsearch

About

A demo about elasticsearch(PHP)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published