Windows系統下Elasticsearch-7.15.2安裝


一、環境

此次筆記使用的運行環境以及軟件版本

系統:WIN10

JDK版本:1.8

Elasticsearch版本:7.15.2

elasticsearch-head版本:最新

IK分詞器版本:7.15.2

Kibana版本:7.15.2

二、Elasticsearch基本知識

2.1 介紹

ES是一個開源的高擴展的分布式全文檢索引擎,它可以近乎實時的存儲、檢索數據;本身擴展性很好,可以擴展到上百台服務器,處理PB級別的數據。

Elasticsearch也使用Java開發並使用Lucene作為其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene的復雜性,從而讓全文搜索變得簡單。

2.2 使用場景

(1)監聽網站Nginx的日志時時同步到ES,通過Kibana來分型日志是否存在問題,服務器層面的監控;

(2)監聽Mysql日志,對日志進行監控檢測,對於業務來說可以進行一些輔助分析;

(3)用戶行為數據埋點收集,提供大數據分析數據支持;

(4)使用ES來構建網站的全文檢索引擎;

2.3 Elasticsearch 特點


(1)分布式的實時文件存儲,每個字段都被索引並可被搜索;

(2)分布式的實時分析搜索引擎;

(3)可彈性擴展到上百台服務器規模,處理PB級結構化或非結構化數據;

(4)開箱即用(安裝即可使用),它提供了許多合理的缺省值,並對初學者隱藏了復雜的搜索引擎理論。只需很少的學習既可在生產環境中使用。

2.4 ElasticSearch核心概念:倒排索引

關系型數據庫 拿着文檔找單詞 elasticSearch 拿着單詞找文檔

elasticSearch中可以包含多個索引(數據庫),每個索引中可以包含多個類型(表),每個類型可以包含多個文檔(行),每個文檔可以包含多個字段(列)

es是面向文檔的,一切都是json。

關系型數據庫和elasticSearch對比

關系型數據庫 elasticSearch
數據庫(database) 索引 indices
表(table) 類型 types
行(row) 文檔 documents
字段(columns) fields

2.5 ElasticSearch基本概念

(1) Cluster

集群是一個或多個節點的集合,它們共同保存您的整個數據,並提供跨所有節點的聯合索引和搜索功能。群集由唯一的名稱標識,默認情況下為“elasticsearch”。此名稱很重要,因為如果節點設置為按名稱加入群集,則該節點只能是群集的一部分。

確保不要在不同的環境中重用相同的群集名稱,否則很可能會導致節點加入錯誤的群集。例如,您可以使用logging-dev,logging-stage以及logging-prod用於開發,預發和生產環境。

如果群集中只有一個節點,那么它是完全正常的。此外,您還可以擁有多個獨立的集群,每個集群都有自己唯一的集群名稱。

(2) Node

節點是作為集群一部分的單個服務器,存儲數據並參與集群的索引和搜索功能。就像集群一樣,節點由名稱標識,默認情況下,該名稱是在啟動時分配給節點的隨機通用唯一標識符(UUID)。如果不需要默認值,可以定義所需的任何節點名稱。此名稱對於管理目的非常重要,您可以在其中識別網絡中哪些服務器與Elasticsearch集群中的哪些節點相對應。

可以將節點配置為按集群名稱加入特定群集。默認情況下,每個節點都設置為加入一個名為cluster的集群elasticsearch,這意味着如果您在網絡上啟動了許多節點並且假設它們可以相互發現,它們將自動形成並加入一個名為elasticsearch的集群。

在單個集群中,可以擁有任意數量的節點。此外,如果網絡上當前沒有其他Elasticsearch節點正在運行,則默認情況下啟動單個節點將形成一個名為elasticsearch的新單節點集群。

ElasticSearch本質上是一個分布式數據庫,允許多台服務器協同工作,每台服務器可以運行多個 ElasticSearch實例。單個 ElasticSearch實例稱為一個節點(node)。一組節點構成一個集群(cluster)。

(3)Index

索引是具有某些類似特征的文檔集合。

例如,可以給客戶數據建立一個索引,給產品目錄建立另一個索引或給訂單數據的建立一個索引。

索引有一個名稱標識(必須全部小寫),此名稱用於在對其中的文檔執行索引,搜索,更新和刪除操作時引用索引所用。

在單個群集中,您可以根據需要定義任意數量的索引。

ElasticSearch會索引所有字段,經過處理后寫入一個反向索引(Inverted Index)。查找數據的時候,直接查找該索引。所以,ElasticSearch數據管理的頂層單位就叫做 Index(索引)。它是單個數據庫的同義詞。每個 Index (即數據庫)的名字必須是小寫。通過下面命令可以訪問當前節點的所有 Index

curl -X GET 'http://localhost:9200/_cat/indices?v'

(4)Type

Type是一個邏輯意義上的分類或者叫分區,允許在同一索引中建立多個type。本質是相當於一個過濾條件,高版本將會廢棄type概念。

Document 可以分組,比如weather這個 Index 里面,可以按城市分組(北京和上海),也可以按氣候分組(晴天和雨天)。這種分組就叫做 Type,它是虛擬的邏輯分組,用來過濾 Document。

不同的 Type 應該有相似的結構(schema),舉例來說,id字段不能在這個組是字符串,在另一個組是數值。這是與關系型數據庫的表的一個區別。性質完全不同的數據(比如productslogs)應該存成兩個 Index,而不是一個 Index 里面的兩個 Type(雖然可以做到)。

下面的命令可以列出每個 Index 所包含的 Type。

curl 'localhost:9200/_mapping?pretty=true'

注意:Elastic 6.x 版只允許每個 Index 包含一個 Type,7.x 版將會徹底移除 Type。

(5)Document

Document是可以編制索引的基本信息單元。例如,您可以為單個客戶提供文檔,為單個產品提供另一個文檔,為單個訂單提供另一個文檔。該文檔以JSON(JavaScript Object Notation)表示,JSON是一種普遍存在的互聯網數據交換格式。

在索引/類型中,可以根據需要存儲任意數量的文檔。

值得注意的是,盡管文檔實際上駐留在索引中,但實際上必須將文檔分配給索引中的一個類型(type)中。

Index 里面單條的記錄稱為 Document(文檔)。許多條 Document 構成了一個 Index。同一個 Index 里面的 Document,不要求有相同的結構(scheme),但是最好保持相同,這樣有利於提高搜索效率。

Document 使用 JSON 格式表示,如下所示:

{
  "id": "000001",
  "name": "joshua317",
  "age": 28
}

(6)分片(Shards)

索引可能存儲大量可能超過單個節點硬件限制的數據。例如,占用1TB磁盤空間的十億個文檔的單個索引可能不適合單個節點的磁盤,或者可能太慢而無法單獨從單個節點提供搜索請求。

為了解決這個問題,Elasticsearch提供了將索引細分為多個稱為分片的功能。創建索引時,只需定義所需的分片數即可。每個分片本身都是一個功能齊全且獨立的“索引”,可以托管在集群中的任何節點上。

分片很重要,主要有兩個原因:

  • 它允許集群進行水平擴展;
  • 它允許集群跨分片(可能在多個節點上)分布和並行化操作,從而提高性能和吞吐量。

分片的分布方式以及如何將其文檔聚合回搜索請求的機制完全由Elasticsearch管理,對用戶而言是透明的。

(7)副本(Replicas)

副本主要是針對主分片(Shards)的復制,Elasticsearch中主分片可以擁有0個或多個的副本。

副本分片的主要目的就是為了故障轉移。

分片副本很重要,主要有兩個原因:

  • 它在分片或節點發生故障時提供高可用性。因此,副本分片永遠不會在與其復制的主分片相同的節點;
  • 副本分片也可以接受搜索的請求,可以並行搜索,從而提高系統的吞吐量。

每個Elasticsearch分片都是Lucene索引。單個Lucene索引中可以包含最大數量的文檔。截止LUCENE-5843,限制是2,147,483,519(= Integer.MAX_VALUE - 128)文檔。您可以使用_cat/shardsAPI 監控分片大小。

三、Elasticsearch-7.15.2安裝

3.1 下載安裝包

訪問地址:https://www.elastic.co/cn/downloads/elasticsearch

 

 

 

下載地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.2-windows-x86_64.zip

3.2 解壓運行

解壓到自己的安裝目錄

 

 

 

目錄文件作用:
bin :腳本文件,包括 ES 啟動 & 安裝插件等等
config : elasticsearch.yml(ES 配置文件)、jvm.options(JVM 配置文件)、日志配置文件等等
JDK : 內置的 JDK,JAVA_VERSION="13.0.2"
lib : 類庫
logs : 日志文件
modules : ES 所有模塊,包括 X-pack 等
plugins : ES 已經安裝的插件。默認沒有插件
data : ES 啟動的時候,會有該目錄,用來存儲文檔數據。該目錄可以設置

運行,直接雙擊bin目錄下面的elasticsearch.bat文件

 

 

 

注意:會出現下面的告警信息,主要說的是本機安裝的jdk1.8版本不滿足需要,Elasticsearch7.x所需要的jdk版本是java11,可以忽略這個告警,當然也可以根據需要調整到java11的版本。

"warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME"
Future versions of Elasticsearch will require Java 11; your Java version from [C:\MyProgram\Java\jdk1.8.0_281\jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
Future versions of Elasticsearch will require Java 11; your Java version from [C:\MyProgram\Java\jdk1.8.0_281\jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
Warning: with JDK 8 on Windows, Elasticsearch may be unable to derive correct
  ergonomic settings due to a JDK issue (JDK-8074459). Please use a newer
  version of Java.
Warning: MaxDirectMemorySize may have been miscalculated due to JDK-8074459.
  Please use a newer version of Java or set MaxDirectMemorySize explicitly.

在elasticsearch7.x之后的版本, 已經集成了自帶的jdk, 在根目錄下的jdk文件夾中 這里需要修改elasticsearch-env.bat啟動文件的配置內容, 設置系統使用elasticsearch自帶的jdk版本 在bin/elasticsearch-env.bat文件中找到關於JAVA_HOME的配置, 注釋掉if…else判斷的東西, 替換為如下三行代碼

把下面的代碼

# now set the path to java
if [ ! -z "$ES_JAVA_HOME" ]; then
  JAVA="$ES_JAVA_HOME/bin/java"
  JAVA_TYPE="ES_JAVA_HOME"
elif [ ! -z "$JAVA_HOME" ]; then
  # fallback to JAVA_HOME
  echo "warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME" >&2
  JAVA="$JAVA_HOME/bin/java"
  JAVA_TYPE="JAVA_HOME"
else
  # use the bundled JDK (default)
  if [ "$(uname -s)" = "Darwin" ]; then
    # macOS has a different structure
    JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
  else
    JAVA="$ES_HOME/jdk/bin/java"
  fi
  JAVA_TYPE="bundled JDK"
fi

改為:

set JAVA="%ES_HOME%\jdk\bin\java.exe"
set JAVA_HOME="%ES_HOME%\jdk"
set JAVA_TYPE=bundled jdk

然后重新啟動。

啟動成功后,會出現下面的信息

 

 

 

簡單訪問下

 

 

 

四、elasticsearch-head插件安裝

為了便於管理ES,可使用head插件,這是最初級的管理工具,在瀏覽器中顯示ES集群,索引等信息,十分簡便好用。

安裝elasticsearch-head需要安裝node和grunt

4.1 node下載並安裝

node訪問地址:

https://nodejs.org/en/

node下載地址:

https://nodejs.org/dist/v16.13.0/node-v16.13.0-x64.msi

直接雙擊進行安裝,安裝完成后,可以通過 node -v查看

 

 
)

 

4.2 elasticsearch-head下載並安裝

訪問地址:

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

下載地址:

https://github.com/mobz/elasticsearch-head/archive/refs/heads/master.zip

解壓 elasticsearch-head-master到 elasticsearch的安裝目錄

 

 

4.3 安裝grunt

grunt 是基於Node.js的項目構建工具,可以進行打包壓縮、測試、執行等等的工作,head插件就是通過grunt啟動。

在命令行下執行 npm install -g grunt-cli

 

 

 

 

 

 

4.4 安裝依賴

在elasticsearch-head-master目錄下執行npm install安裝依賴

 

 

4.5 修改elasticsearch-head-master配置

修改服務器監聽地址,配置文件:Gruntfile.js

connect: {
			server: {
				options: {
					port: 9100,
					base: '.',
					keepalive: true,
					hostname: '*'
				}
			}
		}

4.6 修改elasticsearch配置,重新啟動

修改elasticsearch安裝目錄下的配置文件config/elasticsearch.yml

# 設成0.0.0.0讓任何人都可以訪問,線上服務不要這樣設置。
network.host: 0.0.0.0
http.port: 9200
# 解決elasticsearch-head 集群健康值: 未連接問題, 配置解決跨域, 否則es-head連接會跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
node.name: node-1
cluster.initial_master_nodes: ["node-1"]

注意:

(1)elasticsearch.yml文件的編碼是utf-8

(2)如果出現下面報錯信息

node validation exception
[1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

這個問題是由於配置的問題導致的, 修改配置文件即可解決,在elasticsearch.yml中配置node節點

node.name: node-1
cluster.initial_master_nodes: ["node-1"]

修改完配置后,重啟elasticsearch服務

4.7 啟動運行elasticsearch-head服務

在elasticsearch-head-master目錄下執行grunt server命令

 

 

如果在PowerShell下以管理員的身份下執行grunt server下面錯誤

 

 

 

PS C:\MyProgram\elasticsearch-7.15.2-windows\elasticsearch-head-master> grunt --version
grunt : 無法加載文件 C:\Users\joshua317\AppData\Roaming\npm\grunt.ps1,因為在此系統上禁止運行腳本。有關詳細信息,請參閱
 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ grunt --version
+ ~~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

需要執行下面命令,然后選擇Y

set-ExecutionPolicy RemoteSigned

 

 

 

關閉PowerShel ,然后執行get-ExecutionPolicy,發現變成了RemoteSigned,就成功了

 

 

然后重新執行grunt server命令即可

 

 

 

4.8 訪問elasticsearch-head服務

訪問:http://127.0.0.1:9100/

 

 

 

如果出現集群健康值:未連接,請查看Elasticsearch配置是否正確,Elasticsearch服務是否啟動

 

 

 

五、IK分詞器安裝

在Elasticsearch中,使用較多的中文分詞器是 elasticsearch-analysis-ik,這個是 es 的一個第三方插件,代碼托管在 GitHub 上:https://github.com/medcl/elasticsearch-analysis-ik

注意:Elasticsearch的版本7.15.2,所以需要對應的ik分詞器插件版本應該也是7.15.2,也就是說IK分詞器的版本要選擇和Elasticsearch版本號一樣

項目訪問地址:https://github.com/medcl/elasticsearch-analysis-ik

 

 

 

下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.15.2/elasticsearch-analysis-ik-7.15.2.zip

 

 

 

(1)安裝方式一

直接進入進入Elasticsearch安裝目錄的的bin目錄下,打開命令行窗口執行命令即可。

.\elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.15.2/elasticsearch-analysis-ik-7.15.2.zip

(2)安裝方式二

下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.15.2/elasticsearch-analysis-ik-7.15.2.zip

直接將elasticsearch-analysis-ik-7.15.2.zip文件拷貝到Elasticsearch安裝目錄的plugins目錄下解壓后並將elasticsearch-analysis-ik-7.15.2解壓后的文件夾重命名為ik

重新運行bin/elasticsearch.bat重啟,ik安裝完成。

不知道如何驗證是否安裝成功,可以先使用幫助命令elasticsearch-plugin -h查看可用的命令

C:\MyProgram\elasticsearch-7.15.2-windows\bin> ./elasticsearch-plugin -h
A tool for managing installed elasticsearch plugins

Commands
--------
list - Lists installed elasticsearch plugins
install - Install a plugin
remove - removes plugins from Elasticsearch

Non-option arguments:
command

Option             Description
------             -----------
-E <KeyValuePair>  Configure a setting
-h, --help         Show help
-s, --silent       Show minimal output
-v, --verbose      Show verbose output

所以我們可以使用elasticsearch-plugin list查看已安裝得插件。

C:\MyProgram\elasticsearch-7.15.2-windows\bin> ./elasticsearch-plugin list
ik

六、Kibana安裝

Kibana 是一個 Elastic 公司推出的一個針對 es 的分析以及數據可視化平台,可以搜索、查看存放在 es 中的數據。

訪問地址:https://www.elastic.co/downloads/kibana

下載地址:https://artifacts.elastic.co/downloads/kibana/kibana-7.15.2-windows-x86_64.zip

解壓kibana-7.15.2-windows-x86_64.zip到目標路徑修改kibana-7.15.2-windows-x86_64\config路徑下的kibana.yml

server.port: 5601
elasticsearch.hosts: ["http://localhost:9200"]

啟動Kibana

注意需要先啟動elasticsearch.bat,再啟動kibana.bat

直接通過鏈接訪問:http://localhost:5601/

 

 

 

進入到開發者工具,http://127.0.0.1:5601/app/dev_tools#/console

 

 

 

禁用Kibana安全提示(Elasticsearch built-in security features are not enabled)

Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone. See https://www.elastic.co/guide/en/elasticsearch/reference/7.15/security-minimal-setup.html to enable security.

elasticsearch.yml 配置禁用安全選項xpack.security.enabled,之后重啟ElasticSearch即可:

xpack.security.enabled: false
YAML

 

 

 

最后,報錯不要慌,在安裝或者運行過程中,遇到異常或者報錯,查看Elasticsearch安裝目錄下的logs目錄里面的文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM