python下建立elasticsearch索引實現大資料搜尋——之環境搭建(一)
目錄
1.需求闡述
1)資料儲存在阿里雲內網的Mysql伺服器上,需要通過一臺伺服器SSH隧道穿透取得資料。
2)首先明確,一張設計圖需要多種素材來構成。資料量很大,需要操作的有兩個表,稱為stylepatternshow表,目前資料3w行(此表存著一張圖片所需要的所有素材id)和 resource表,目前資料4w行(此表存著各種素材的資訊,包括主圖案【玫瑰,蘭花等】,顏色【紅色,黃色等】,技法【水墨畫,電腦繪畫等】)
3)現在是使用者隨意挑出想要的設計圖的主圖案,顏色,技法。 那麼需要根據這個需求來推薦出設計圖。
首先指出,這個資料庫設計是有問題,並沒有儲存到 素材——>設計圖 的資訊,只存了設計圖——>素材 的資訊(設計圖包含有需要素材的id)。就這個情況,正常程式設計思路是:根據需求,在resource表中分別找出對應主圖案,顏色,技法的有哪些material列表,再去stylepatternshow表去找同時包含這三個material的設計圖,達到目的,親測需要30s。因此有必要建立搜尋引擎,實現快速查詢,結果平均1s,給力!
2.環境搭建
首先列出我的環境
- ubuntu 16.04LTS
- JAVA環境:
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11)
OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)
- elasticsearch-6.3.1
- python2/3都行
首先我們需要藉助elasticsearch來建立搜尋引擎(owe to 它的倒排索引),下面來搭建環境:(確保你有Java環境)
2.1安裝Elasticsearch
-
檢測是否安裝了Elasticsearch
ps aux|grep elasticsearch
- 下載Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.tar.gz
- 或者從官網中下載相應的壓縮包,使用ftp上傳至伺服器進行壓縮安裝:
-
解壓安裝Elasticsearch
解壓到當前目錄
tar -zxvf elasticsearch-6.3.1.tar.gz
- 安裝,將Elasticsearch移動到
/usr/local/elasticsearch
目錄之中
mv elasticsearch-6.3.1 /usr/local/elasticsearch
- 修改配置檔案
- 進入
/usr/local/elasticsearch/config
目錄,使用vi編輯器
vi elasticsearch.yml
- 取消如下注釋,並修改為0.0.0.0:(所有主機可訪問,便於遠端被連線)
network.host: 0.0.0.0
- 使用vi編輯器,修改
/etc/sysctl.conf
檔案,新增如下程式碼(若無將會出現下面常見問題1):
vm.max_map_count=262144
- 退出儲存後執行如下命令:
sysctl -p
- 使用vi編輯器,修改
/etc/security/limits.conf
檔案,在檔案末尾新增如下程式碼(若無將會出現下面常見問題2):
# python為登入伺服器的使用者名稱
python soft nofile 65536
python hard nofile 65536
python soft nproc 4096
python hard nproc 4096
值得注意的是,python為登入的使用者名稱。修改退出儲存之後,切記需要退出重新登入,配置才能生效!!!
2.1.1啟動Elasticsearch
進入/usr/local/elasticsearch
目錄之中,輸入以下命令,開始Elasticsearch服務:
./bin/elasticsearch
- 測試一下:
curl -XGET 'http://localhost:9200/'
- 出現以下程式碼,就表示安裝完成了:
{
"name" : "5U80WUO",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "F-WeQ0S_SQ2EkR7wAcslVg",
"version" : {
"number" : "6.3.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "eb782d0",
"build_date" : "2018-06-29T21:59:26.107521Z",
"build_snapshot" : false,
"lucene_version" : "7.3.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
-
max virutal memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解決方案,請看上面修改配置檔案第2項
-
max number of threads [3750] for user [xxx] is too low, increase to at least [4096]
這個問題折磨了博主很久,在網上找到的答案都是修改
/etc/security/limits.d/90-nproc.conf
檔案,可是我發現我係統中根本不存在此檔案!!!後又請教高人朋友,說是可以修改/etc/security/limits.conf
檔案,修改發現之後也根本不管用,原來修改該檔案之後需要退出重新登入一下才管用。具體修改配置,請看修改配置檔案
2.2安裝PyCharm
上面我們已經確保擁有JAVA環境,elasticsearch工具,接下來需要python的IDE,這裡我選擇PyCharm,功能強大。
- 下載
- 安裝PyCharm
下載好的檔案的名稱可能是 ‘pycharm-community-2017.2.3.tar.gz’
首先開啟終端,然後通過下面的命令進入下載檔案所在的資料夾:
cd ~/Downloads
或者如果資料夾是中文
cd ~/下載
然後,通過執行下面的命令找到你下載的檔案的名字:
ls
得到檔名字後複製
然後執行下面的命令解壓檔案:
tar -xvzf pycharm-community-2017.2.3.tar.gz -C ~ //~即為檔案解壓路徑
!!!這裡-C後面的~即為檔案解壓路徑,可以自己選擇,這裡是解壓到home目錄下。
然後點選回車,解壓完成就安裝好了。
- 在linux下執行PyCharm
首先進入home(安裝路徑)目錄
cd ~
執行 ls 命令查詢資料夾名:
ls
查詢到檔名以後複製,輸入進下面的命令,進入 PyCharm 目錄:
cd pycharm-community-2017.2.3/bin
最後,通過執行下面的命令來執行 PyCharm:
sh pycharm.sh &
然後就會執行pycharm,可以開始開發啦。
- 以後執行PyCharm的方法
方法一:每次執行也需要使用cd命令,進入pycharm的安裝路徑下的bin目錄,用sh命令來啟動pycharm。
方法二:或者直接把絕對路徑給出,方便把Pycharm安裝到其他地方的同學。只使用一條命令就可以執行,很方便。:
sh ~/安裝PyCharm的目錄/pycharm-community-xxx.x.x/bin/pycharm.sh &
同時,覺得很難記難輸入的pycharm-community-2018.1.1目錄名,是可以自己修改的,可以修改為自己好記的名字。
=======================================================================================================
Now,環境都搭好了,下面開始程式設計開發吧!!!詳見python下建立elasticsearch索引實現大資料搜尋——之程式設計實現(二)