前言
據網路評價,同樣也是全文檢索的 sphinx 在效能上是非常優異的,而 java base 的 lucene 在效能上表現較差。而先前也曾經整合過 sphinx 至 django 中。
為何會再研究整合 elasticsearch 主要原因有二:
事前準備
請先閱讀ec2(ubuntu12.04) + django + apache + mysql + scrapy + sfc(sphinx) 安裝
重複的步驟便不在贅述,主要是把 sfc 換成 haystack + elasticsearch
安裝步驟
安裝 elasticsearch(參考 https://gist.github.com/2026107)
apt-get install openjdk-7-jre -y安裝 haystack
wget https://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.19.8.tar.gz -O elasticsearch.tar.gz
tar -xf elasticsearch.tar.gz
rm elasticsearch.tar.gz
mv elasticsearch-* elasticsearch
mv elasticsearch /usr/local/share
curl -L http://github.com/elasticsearch/elasticsearch-servicewrapper/tarball/master | tar -xz
mv *servicewrapper*/service /usr/local/share/elasticsearch/bin/
rm -Rf *servicewrapper*
/usr/local/share/elasticsearch/bin/service/elasticsearch install
ln -s `readlink -f /usr/local/share/elasticsearch/bin/service/elasticsearch` /usr/local/bin/rcelasticsearch
因 EC2 micro 規格較差,需將 ES_HEAP_SIZE 改為 256 (or 512) 才有辦法跑起來,所以需要調整 configure 檔案,更動檔案最上方兩行
vi /usr/local/share/elasticsearch/bin/service/elasticsearch.conf
set.default.ES_HOME=/usr/local/share/elasticsearch/ set.default.ES_HEAP_SIZE=256
啟動 elasticsearch
service elasticsearch start
透過 curl 測試
curl http://localhost:9200
{ "ok" : true, "status" : 200, "name" : "Mammomax", "version" : { "number" : "0.19.8", "snapshot_build" : false }, "tagline" : "You Know, for Search" }
(假設已經安裝好 django/mysql 等相關環境)
apt-get install git
pip install -e git+https://github.com/toastdriven/django-haystack.git@master#egg=django-haystack
cd src/django-haystack/
python setup.py install
cd ~
rm -r src
安裝其他相關套件
pip install requests
pip install -e git+git://github.com/toastdriven/pyelasticsearch.git@master#egg=pyelasticsearch
cd src/pyelasticsearch/
python setup.py install
cd ~
rm -r src
設定資料庫
mysql -u root –p
CREATE DATABASE HaystackSearch default character set utf8mb4;
exit
建立 Django 專案
自行建立一個專案可參考
http://django-haystack.readthedocs.org/en/latest/tutorial.html
採用我已經建立好的專案(主要以上面教學為主進行操作)
上傳 HaystackSearch 資料夾至 /root/
(需設定 mysql 帳號密碼)
cd ~/HaystackSearch
python manage.py runserver 0.0.0.0:80
至http://[EC2_IP]/admin/HaystackSearch/note/add/
新增幾筆後,下達
python manage.py update_index
接著就可以在底下頁面測試搜尋的結果了
http://[EC2_IP]/search
沒有留言:
張貼留言