目錄
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上傳至服務器進行壓縮安裝:
下載地址:https://www.elastic.co/downloads/elasticsearch
這裏選擇6.3.1版本的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/'
或在瀏覽器URL直接鍵入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,功能強大。
- 下載
在linux系統下打開網址:
http://www.jetbrains.com/pycharm/download/#section=linux,選擇Community版,保存文件,即可開始下載。
- 安裝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索引實現大數據搜索——之編程實現(二)