1. 程式人生 > >python下建立elasticsearch索引實現大資料搜尋——之環境搭建(一)

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"
}
  1. max virutal memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    解決方案,請看上面修改配置檔案第2項

  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索引實現大資料搜尋——之程式設計實現(二)