Elasticsearch概念及使用

1 ES定義

ES=elaticsearch簡寫, Elasticsearch是一個開源的高擴展的分佈式全文檢索引擎,它能夠近乎實時的存儲、檢索數據;自己擴展性很好,能夠擴展到上百臺服務器,處理PB級別的數據。 
Elasticsearch也使用Java開發並使用Lucene做爲其核心來實現全部索引和搜索的功能,可是它的目的是經過簡單的RESTful API來隱藏Lucene的複雜性,從而讓全文搜索變得簡單。html

ELK= elasticsearch + Logstash + kibana 
elasticsearch:後臺分佈式存儲以及全文檢索 
logstas:日誌加工、「搬運工」 
kibana:數據可視化展現。 
ELK架構爲數據分佈式存儲、可視化查詢和日誌解析建立了一個功能強大的管理鏈。 三者相互配合,取長補短,共同完成分佈式大數據處理工做。java

2 ES必要的插件

必要的Head:(web界面)、、IK(中文分詞)、graph等插件的詳細安裝和使用。 node

3 ES數據架構的主要概念(與關係數據庫Mysql對比)

這裏寫圖片描述 
(1)關係型數據庫中的數據庫(DataBase),等價於ES中的索引(Index) 
(2)一個數據庫下面有N張表(Table),等價於1個索引Index下面有N多類型(Type), 
(3)一個數據庫表(Table)下的數據由多行(ROW)多列(column,屬性)組成,等價於1個Type由多個文檔(Document)和多Field組成。 
(4)在一個關係型數據庫裏面,schema定義了表、每一個表的字段,還有表和字段之間的關係。 與之對應的,在ES中:Mapping定義索引下的Type的字段處理規則,即索引如何創建、索引類型、是否保存原始索引JSON文檔、是否壓縮原始JSON文檔、是否須要分詞處理、如何進行分詞處理等。 
(5)在數據庫中的增insert、刪delete、改update、查search操做等價於Elinux

名詞解釋:web

Cluster:集羣。sql

Index:索引,Index至關於關係型數據庫的DataBase。數據庫

Type:類型,這是索引下的邏輯劃分,通常把有共性的文檔放到一個類型裏面,至關於關係型數據庫的table。bootstrap

Document:文檔,Json結構,這點跟MongoDB差很少。vim

Shard、Replica:分片,副本。瀏覽器

分片有兩個好處,一個是能夠水平擴展,另外一個是能夠併發提升性能。在網絡環境下,可能會有各類致使分片沒法正常工做的問題,因此須要有失敗預案。ES支持把分片拷貝出一份或者多份,稱爲副本分片,簡稱副本。副本有兩個好處,一個是實現高可用(HA,High Availability),另外一個是利用副本提升併發檢索性能。

分片和副本的數量能夠在建立index的時候指定,index建立以後,只能修改副本數量,不能修改分片。

 

 

在linux 系統安裝ElasticSearch-6.3.2最新版本,也適合6.x 系列版本作參考

前提先在linux 安裝好jdk1.8

 

建立用戶

從5.0開始,ElasticSearch 安全級別提升了,不容許採用root賬號啓動,因此咱們要添加一個用戶

 

1 建立 elasticsearch 用戶組

1
[root @localhost  ~]# groupadd elasticsearch

2 建立用戶 es 並設置密碼爲es

1
2
[root @localhost  ~]# useradd es
[root @localhost  ~]# passwd es

3 用戶es 添加到 elasticsearch 用戶組

1
[root @localhost  ~]# usermod -G elasticsearch es

4 設置sudo權限

1
[root @localhost  ~]# visudo
1
2
3
4
5
在root ALL=(ALL) ALL 一行下面
添加es用戶 以下:
es ALL=(ALL) ALL
 
添加成功保存後切換到es用戶操做
1
2
[root @localhost  ~]# su es
[es @localhost  root]$

  

下載安裝包

在/usr/local/src 目錄下 下載elasticsearch ,並解壓 tar.gz 

[es@localhost src]$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz

1
[es @localhost  src]$ tar -xvf elasticsearch- 6.3 . 2 .tar.gz 
1
 
1
把解壓的文件移動到 /usr/local
1
[es @localhost  src]$ sudo mv elasticsearch- 6.3 . 2  /usr/local

更改elasticsearch-6.3.2 文件夾以及內部文件的所屬用戶爲es, 用戶組組爲elasticsearch,-R表示逐級

1
[es @localhost  local]$ sudo chown -R es:elasticsearch elasticsearch- 6.3 . 2

 

ElasticSearch 配置

elasticsearch.yml 修改

1
[es @localhost  elasticsearch- 6.3 . 2 ]$ vim config/elasticsearch.yml

修改內容(沒有就添加):

cluster.name: my-application

node.name: node-1

network.host: 0.0.0.0 

http.port: 9200

#由於Centos6不支持SecComp,而ES默認bootstrap.system_call_filter爲true進行檢測

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

修改/etc/sysctl.conf 

切換回root 用戶 執行

1
vim /etc/sysctl.conf

在文件最後面添加內容:

vm.max_map_count=262144

保存退出後,使用sysctl -p 刷新生效

複製代碼
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
vm.max_map_count = 262144
[root@localhost ~]# 
複製代碼

修改文件/etc/security/limits.conf

1
vim /etc/security/limits.conf

添加以下內容:

1
2
3
4
5
* hard nofile  65536
* soft nofile  65536
 
* soft nproc  2048
* hard nproc  4096  

啓動elasticesearch 可能還會報以下錯誤

max number of threads [1024] for user [lish] likely too low, increase to at least [4096]

解決:切換到root用戶,進入limits.d目錄下修改配置文件。

vi /etc/security/limits.d/90-nproc.conf

修改以下內容:

* soft nproc 1024

#修改成

* soft nproc 4096

 

啓動 elasticsearch

完成上面配置修改後,切換到es 用戶,目錄切換到 elasticsearch 安裝目錄下執行

1
[es @localhost  elasticsearch- 6.3 . 2 ]$ bin/elasticsearch

在瀏覽器輸入localhost:9200 驗證是否啓動成功,若是瀏覽器輸出以下信息,表明安裝啓動成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
   "name"  "node-1" ,
   "cluster_name"  "elasticsearch" ,
   "cluster_uuid"  "8okSnhNzRr6Xo233szO0Vg" ,
   "version"  : {
     "number"  "6.3.2" ,
     "build_flavor"  "default" ,
     "build_type"  "tar" ,
     "build_hash"  "053779d" ,
     "build_date"  "2018-07-20T05:20:23.451332Z" ,
     "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:expecting token of type [START_OBJECT] but found [VALUE_STRING]]; 
 
錯誤緣由:elasticsearch.yml 文件內部錯誤 
解決辦法:仔細檢查yml文件中的配置項書寫格式: (空格)name:(空格)value
 
---------------------------------------------------------------------------------
異常信息2:java.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed
 錯誤緣由:Centos6不支持SecComp,而ES默認bootstrap.system_call_filter爲true進行檢測,因此致使檢測失敗,失敗後直接致使ES不能啓動
 
解決辦法:修改elasticsearch.yml 添加一下內容 :
 
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
 
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
異常信息3:BindTransportException[Failed to bind to [9300-9400]
解決辦法 打開配置文件elasticsearch.yml 將 network.host: 192.168.0.1 修改成本機IP 0.0.0.0
 
 
--------------------------------------------------------------------------------------------
異常信息4:max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
 
解決辦法:切換到root用戶,進入limits.d目錄下修改配置文件。
 
vi /etc/security/limits.d/90-nproc.conf 
 
修改以下內容:
 
* soft nproc 1024
 
#修改成
 
* soft nproc 2048
1
<em id= "__mceDel" > </em>

使用參考阮一峯:http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html

相關文章
相關標籤/搜索