1. 程式人生 > >十次方第四天[Java專案]

十次方第四天[Java專案]

ElasticSearch

1.下載地址: https://www.elastic.co/cn/downloads/elasticsearch 選擇對應的版本即可

2.啟動:解壓檔案之後,找到bin目錄,找到elasticsearch.bat,直接雙擊就可以了,啟動一共是佔了兩個埠,一個是9300,一個是9200,如果是java開發的話用的是9300.其他的是9200,驗證啟動成功直接在瀏覽器輸入http://127.0.0.1:9200能出來一些相關資訊就說明是已經啟動成功了

3.建立索引庫:用put方式提交,訪問 http://localhost:9200/tensquare_elasticsearch

 ,這樣就建立了一個名稱為tensquare_elasticsearc的索引庫,請求返回的資料

4.新增文件(索引)操作 以post方式提交 http://localhost:9200/tensquare_elasticsearch/article body:

{
	"title":"java專案",
	"content":"黑馬十次方"
}

返回結果如下

{
    "_index": "tensquare_elasticsearch",
    "_type": "article",
    "_id": "X2MfS2cBS3Rp8wJxTrVF",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

_id是由系統自動生成的

5.查詢全部文件 查詢某索引型別的群補資料 以get方式請求 http://localhost:9200/tensquare_elasticsearch/article/_search 返回結果如下

{
    "took": 59,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
            {
                "_index": "tensquare_elasticsearch",
                "_type": "article",
                "_id": "X2MfS2cBS3Rp8wJxTrVF",
                "_score": 1,
                "_source": {
                    "title": "java專案",
                    "content": "黑馬十次方"
                }
            }
        ]
    }
}

6.修改操作 以put方式提交以下地址 http://localhost:9200/tensquare_elasticsearch/article/X2MfS2cBS3Rp8wJxTrVF 最後一個/後面是id,這裡的修改操作,如果id沒有的話就會去創鍵一個,

7.按id查詢文件 以get方式請求 http://localhost:9200/tensquare_elasticsearch/article/1

8.按條件去查詢 根據某個關鍵詞去查詢,以get方式提交 http://localhost:9200/tensquare_elasticsearch/article/_search?q=title:java

9.模糊查詢 我們可以用*代表任意字元

http://localhost:9200/tensquare_elasticsearch/article/_search?q=title:*j*

10.刪除操作 根據id去刪除,用delete方式提交

http://localhost:9200/tensquare_elasticsearch/article/X2MfS2cBS3Rp8wJxTrVF

安裝head外掛

如果都是通過rest請求的方式使用elasticsearch有點麻煩,而且不夠人性化,我們一般都會通過圖形化介面實現日常的管理,最常用的就是head外掛

1.下載head外掛的地址

https://github.com/mobz/elasticsearch-head

2.安裝nodejs,安裝cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

3.將grunt安裝為全域性命令,grunt是基於nodejs的構建工具,它可以自動執行你所設定的任務

npm install -g grunt-cli

4.直接構建專案

cnpm install
依賴下載完成之後
grunt server

5.啟動成功後就可以訪問9100了.但是連結不上我們本地的elasticsearch,需要解決跨域問題,在elas的安裝目錄下找到confg裡面的elasticsearch.yml,加上兩句命令

http.cors.enabled: true
http.cors.allow-origin: "*"

IK分詞器

1.下載地址

https://github.com/medcl/elasticsearch-analysis-ik/releases

下載和自己版本對應的ik分詞器,否則打不開

2.解壓 解壓完成後,把資料夾改成ik,放到es目錄下的plugins資料夾中,重啟es

3.自定義詞庫 在ik分詞器的config目錄下新增要自定義的dic檔案,

4.測試有沒有安裝成功

http://localhost:9200/_analyze?analyzer=ik_smart&pretty=true&text=我數一二三木頭人

如果沒有報錯就是說明成功了,報了400的說明版本不匹配或者是es版本更換成低的

elasticsearch與mysql的同步

logstash

1.logstash下載完成之後直接解壓就可以使用,在bin目錄下點選logstash.bat,會一閃而過,說明是已經啟動了, 2.啟動之後怎麼驗證啟動成功了呢,開啟cmd輸入命令

logstash -e 'input { stdin{}} output { stdout{}}'

在控制檯輸入字元,隨後就有日誌出來,說明已經啟動成功了, -e後面跟的是命令,-f是檔案 3.mysql資料匯入es 在logstash解壓目錄下建立一個資料夾aaa,名字隨意,資料夾下放入mysql的驅動包和 建立mysql.conf,內容如下

input {
  jdbc {
	  # mysql jdbc connection string to our backup databse
	  jdbc_connection_string => "jdbc:mysql://192.168.254.128:3306/tensquare_article?characterEncoding=UTF8"
	  # the user we wish to excute our statement as
	  jdbc_user => "root"
	  jdbc_password => "root"
	  # the path to our downloaded jdbc driver  
	  jdbc_driver_library => "D:\TEN\logstash-5.6.8\logstash-5.6.8\mysqletc\mysql-connector-java-5.1.46.jar"
	  # the name of the driver class for mysql
	  jdbc_driver_class => "com.mysql.jdbc.Driver"
	  jdbc_paging_enabled => "true"
	  jdbc_page_size => "50"
	  #以下對應著要執行的sql的絕對路徑。
	  #statement_filepath => ""
	  statement => "select id,title,content,state from tb_article"
	  #定時欄位 各欄位含義(由左至右)分、時、天、月、年,全部為*預設含義為每分鐘都更新(測試結果,不同的話請留言指出)
      schedule => "* * * * *"
  }
}

output {
  elasticsearch {
	  #ESIP地址與埠
	  hosts => "127.0.0.1:9200" 
	  #ES索引名稱(自己定義的)
	  index => "tensquare_article"
	  #自增ID編號
	  document_id => "%{id}"
	  document_type => "article"
  }
  stdout {
      #以JSON格式輸出
      codec => json_lines
  }
}

編輯完成之後檢查沒有什麼問題,在命令列下執行

logstash -f ../aaa/mysql.conf

docker環境下安裝es

(1)下載映象

docker pull elasticsearch:5.6.8

(2)建立容器

docker run -di --name=tensquare_es -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8

(3)啟動瀏覽器檢視是否啟動成功

http://你的ip:9200

(4)修改專案中的application.yml的ip (5)執行測試程式,發現會有一些報錯,這個是因為es5之後預設不再開啟遠端連結,需要修改配置檔案 (6)進入容器

docker exec -it tensquare_es /bin/bash

進入容器之後會發現裡面有一些命令是沒有的,ll,vi等好多都沒有,這樣我們只能通過宿主機中的某個檔案來實現對配置容器的修改 (7)複製配置檔案到宿主機

docker cp tensquare_es:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml

(8)停止和刪除之前建立的容器

docker stop tensquare_es
docker rm tensquare

(9)重新執行建立命令

docker run -di --name=tensquare_es -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:5.6.8

(10)修改/usr/share/elasticsearch.yml

將transport.host: 0.0.0.0的註釋開啟,前面的#去掉,其作用是允許任何ip去訪問

(11)重新啟動es

docker restart tensquare_es

重啟之後我們之後會發現重啟失敗了,這是為什麼呢,是因為es在啟動過程中會進行檢查,比如最多開啟的檔案個數以及虛擬記憶體區域數量等等,如果你放開了此配置,意味著需要開啟更多的檔案以及虛擬記憶體,所有我們需要對系統進行調優

(12)一共修改兩處 修改/etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536

nofile是單個程序允許開啟的最大檔案數,soft nofile是軟限制,hard nofile是硬限制

修改/etc/sysctl.conf

vm.max_map_count=655360

限制一個程序可以擁有vma(虛擬記憶體區域)的數量 修改 完成後執行以下命令立即生效

sysctl -p

(13)重啟虛擬機器,重啟容器,再次啟動容器就可以進行遠端訪問了

docker環境下ik分詞器的安裝

(1)通過sftp將ik資料夾上傳到虛擬機器上

(2)將資料夾複製到容器內/usr/share/elasticsearch/plugins/

docker cp ik tensquare_es:/usr/share/elasticsearch/plugins/

(3)重啟,即可載入ik分詞器

 

大家需要十次方專案的視訊可以關注我的微信公眾號,

大家有需要專案視訊的可以加我微信yan1242269186