Docker部署單點ElasticSearch(ES)、中文分詞器以及可視化插件elasticsearch-head、kibana

最近剛研究ES,就記錄一下基本環境的配置,有時間再搭建一套集羣環境,這裏用到的版本統一爲6.8.2,現在網上es7+了,因爲是學習使用不必追求最新的版本,學習資料更新要慢一些,新特性用不到,從簡單入手,當然也不想太古老,綜合各方考慮就挑了這個版本的。

鏡像準備

先將鏡像pull下來,所有用的的鏡像,如下:

docker pull docker.elastic.co/elasticsearch/elasticsearch:6.8.2
docker pull docker.elastic.co/kibana/kibana:6.8.2
# 網上這個鏡像算最新了,不過也有幾年了
docker pull mobz/elasticsearch-head:5

中文分詞器準備

還需要下載箇中文分詞器

中文分詞器需要去這裏下載,分詞器的版本要跟es版本一致,我這裏的版本是6.8.2,所有直接下載

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.2/elasticsearch-analysis-ik-6.8.2.zip

Docker安裝ES

docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.8.2

注意,用參數discovery.type指定是單節點的single-node

查看是否成功,直接在瀏覽器上輸入:http://127.0.0.1:9200,返回大致如下:

{
  "name" : "fcz78No",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "wMHbP81pQIWTt31z6W3jNA",
  "version" : {
    "number" : "6.8.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "b506955",
    "build_date" : "2019-07-24T15:24:41.545295Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

編輯一下跨域問題

進入es容器,在elasticsearch.yml中添加下面的後兩行配置

docker exec -it es /bin/bash
vi ./config/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"

然後重啓一下容器

docker restart es

Docker安裝kibana

docker run -d --name kibana -e ELASTICSEARCH_URL=http://10.50.200.169:9200 -p 5601:5601 docker.elastic.co/kibana/kibana:6.8.2

注意,網上各種情況不一,有的用ELASTICSEARCH_URL指定ip地址,有的用 --link指定鏈接容器,並且還有人用ELASTICSEARCH_URL指定的ip地址必須是容器內部的ip地址,我只裏就是如上配置的,並且是成功的,其他情況沒有一一驗證,另外得說一下,我的服務器ip就是10.50.200.169

安裝完成後,訪問http://10.50.200.169:5601,出現如下界面表示成功
kibana

安裝中文分詞器插件

之前已經準備好了分詞器elasticsearch-analysis-ik-6.8.2.zip,將其移入到es容器內的plugins目錄下,然後創建一個ik文件夾,將zip放入,並解壓即可。操作如下

docker exec -it es /bin/bash
[root@32ff976c85e5 elasticsearch]# ls
LICENSE.txt  NOTICE.txt  README.textile  bin  config  data  lib  logs  modules  plugins
[root@32ff976c85e5 elasticsearch]# cd plugins/
[root@32ff976c85e5 plugins]# mkdir ik
[root@32ff976c85e5 plugins]# cd ik
[root@32ff976c85e5 ik]# unzip elasticsearch-analysis-ik-6.8.2.zip
[root@32ff976c85e5 ik]# ll
total 5832
-rw-r--r-- 1 root root  263965 May  6  2018 commons-codec-1.9.jar
-rw-r--r-- 1 root root   61829 May  6  2018 commons-logging-1.2.jar
drwxr-xr-x 2 root root    4096 Dec 25 20:20 config
-rw-r--r-- 1 root root   54738 Jan 17 21:47 elasticsearch-analysis-ik-6.8.2.jar
-rw-r--r-- 1 root root 4504673 Jan 17 13:47 elasticsearch-analysis-ik-6.8.2.zip
-rw-r--r-- 1 root root  736658 May  6  2018 httpclient-4.5.2.jar
-rw-r--r-- 1 root root  326724 May  6  2018 httpcore-4.4.4.jar
-rw-r--r-- 1 root root    1805 Jan 17 21:47 plugin-descriptor.properties
-rw-r--r-- 1 root root     125 Jan 17 21:47 plugin-security.policy

插件完成後,需要重啓一下es容器。
然後轉入kibana管理界面中找到Dev Tools菜單,在Console中輸入測試,並正常返回如下
中文分詞器測試

安裝elasticsearch-head

docker run --name es-manager -d -p 9100:9100 mobz/elasticsearch-head:5

運行後,在瀏覽器輸入:http://10.50.200.169:9100,查看
elasticsearch-head
表示成功!
可以鏈接一下,將 localhost修改爲10.50.200.169,並“連接”,如下
接入ES成功
在其中能看到已經有了kibana的相關索引。

關於ES-head查詢提交等操作報406異常錯誤解決

406異常
提示比較明顯,由於年久失修吧,eshead維護可能不到位,提示不支持application/x-www-form-urlencoded頭,那就得換一下,需要既然容器裏面修改vendor.js的提交參數。具體修改方法參考這裏或者這裏,我這裏簡要記錄一下

# 首先進入容器
docker exec -it es-manager /bin/bash
# 換源(目的是爲了安裝vim,否則原鏡像裏面沒有vi和vim命令,國外源也安裝不上vim)
mv /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
apt-get update
apt-get install -y vim
# 安裝完成vim後,編輯
cd _site/
vim vendor.js
:set number  # 展示行號
:6886 # 跳轉到6886行,修改
# 將 application/x-www-form-urlencoded 改成 application/json;charset=UTF-8
:7573 # 同理,跳轉到7573行也做同樣修改

保存,退出,然後重啓eshead的容器即可。

ES基本操作

通過kibana新增一個索引:

PUT junwei
{
  "settings":{
    "index":{
      "number_of_shards":5,
      "number_of_replicas":1
    }
  }
}

#number_of_shards 分片數量
#number_of_replicas 副本數量
點擊執行
點擊執行後,再通過es-head查看
在這裏插入圖片描述
當然使用Kibana也可查看啦
在這裏插入圖片描述

獲取某個索引的設置

GET junwei/_settings

獲取所有的設置

GET _all/_settings
# 或者
GET _settings

或者指定的設置

GET .kibana,junwei/_settings

修改副本數量

PUT junwei/_settings
{
  "number_of_replicas":2
}

獲取所有索引信息

GET _all 

獲取某個索引信息

GET junwei

保存文檔數據到索引中

指定id=1

PUT junwei/job/1
{
"title":"Docker部署單點ElasticSearch(ES)、中文分詞器以及可視化插件elasticsearch-head、kibana",
"class":"article",
"publish_date":"2020-04-26",
"comments":150
}

另一種保存,不指定id,使用系統生成的id

POST junwei/job/
{
"title":"爲夢想而生,爲自己而活,爲家人奮鬥,爲事業拼搏 —— 沃-茲基-碩德",
"class":"csdn",
"publish_date":"2009-03-16",
"comments":313209
}

根據id查詢

GET junwei/job/1
# 或者
GET junwei/job/1?_source

在這裏插入圖片描述

根據id只查詢標題titile

GET junwei/job/1?_source=title

根據id查詢title和class

GET junwei/job/1?_source=title,class

在這裏插入圖片描述

覆蓋更新

PUT junwei/job/1
{
	"comments":1500
}

注意,其他沒設置的字段會被清空,如上面命令執行後如下:
在這裏插入圖片描述
只剩下評論數是1500了,其他信息全部清空了,這一點十分需要注意了,推薦更新只用下面的方法。

只更新某個字段

POST junwei/job/1/_update
{
  "doc":{
    "comments":2000
  }
}

更新後,只將評論數修改爲2000,其他信息都不變
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章