Elasticsearch 7.9.1 學習


個人學習筆記,謝絕轉載!!!

原文:https://www.cnblogs.com/wshenjin/p/13816873.html


索引:

在Elasticsearch中存儲數據的行為就叫做索引(indexing),不過在索引之前,我們需要明確數據應該存儲在哪里。

在Elasticsearch中,文檔歸屬於一種類型(type),而這些類型存在於索引(index)中,我們可以畫一些簡單的對比圖來類比傳統關系型數據庫:

Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices   -> Types  -> Documents -> Fields

Elasticsearch集群可以包含多個索引(indices)(數據庫),每一個索引可以包含多個類型(types)(表),每一個類型包含多個文檔(documents)(行),然后每個文檔包含多個字段(Fields)(列)。

  • 關系型數據庫中的數據庫(DataBase),等價於ES中的索引(Index)
  • 1個數據庫下面有N張表(Table),等價於1個索引Index下面有N多類型(Type),
  • 1個數據庫表(Table)下的數據由多行(ROW)多列(column,屬性)組成,等價於1個Type由多個文檔(Document)和多Field組成。
  • 在關系型數據庫里面,schema定義了表、每個表的字段,還有表和字段之間的關系。 在ES中:Mapping定義索引下的Type的字段處理規則,即索引如何建立、索引類型、是否保存原始索引JSON文檔、是否壓縮原始JSON文檔、是否需要分詞處理、如何進行分詞處理等。
  • 在數據庫中的增insert、刪delete、改update、查select操作等價於ES中的增PUT/POST、刪Delete、改_update、查GET.
「索引」含義的區分

索引(index)這個詞在Elasticsearch中有着不同的含義:

● 索引(名詞) 如上文所述,一個索引(index)就像是傳統關系數據庫中的數據庫,它是相關文檔存儲的地方,index的復數是indices 或indexes。

● 索引(動詞) 「索引一個文檔」表示把一個文檔存儲到索引(名詞)里,以便它可以被檢索或者查詢。這很像SQL中的INSERT關鍵字,差別是,如果文檔已經存在,新的文檔將覆蓋舊的文檔。
	
● 倒排索引 傳統數據庫為特定列增加一個索引,例如B-Tree索引來加速檢索。Elasticsearch和Lucene使用一種叫做倒排索引(inverted index)的數據結構來達到相同目的。

默認情況下,文檔中的所有字段都會被索引(擁有一個倒排索引),只有這樣他們才是可被搜索的。

分片和副本

為了將數據添加到Elasticsearch,我們需要索引(index)——一個存儲關聯數據的地方。實際上,索引只是一個用來指向一個或多個分片(shards)的“邏輯命名空間(logical namespace)”.

一個分片(shard)是一個最小級別“工作單元(worker unit)”,它只是保存了索引中所有數據的一部分。分片就是一個Lucene實例,並且它本身就是一個完整的搜索引擎。文檔存儲在分片中,並且在分片中被索引,但是應用程序不會直接與它們通信,取而代之的是,直接與索引通信。

分片是Elasticsearch在集群中分發數據的關鍵。把分片想象成數據的容器。文檔存儲在分片中,然后分片分配到集群中的節點上。當集群擴容或縮小,Elasticsearch將會自動在節點間遷移分片,以使集群保持平衡。

分片可以是主分片(primary shard)或者是復制分片(replica shard)。索引中的每個文檔屬於一個單獨的主分片,所以主分片的數量決定了索引最多能存儲多少數據。

理論上主分片能存儲的數據大小是沒有限制的,限制取決於實際的使用情況。分片的最大容量完全取決於:硬件存儲的大小、文檔的大小和復雜度、如何索引和查詢你的文檔,以及期望的響應時間。

復制分片只是主分片的一個副本,它可以防止硬件故障導致的數據丟失,同時可以提供讀請求,比如搜索或者從別的shard取回文檔。

當索引創建完成的時候,主分片的數量就固定了,但是復制分片的數量可以隨時調整。

集群健康:

在Elasticsearch集群中可以監控統計很多信息,但是只有一個是最重要的:集群健康(cluster health)。集群健康有三種狀態:green、yellow或red。

# curl -XGET http://127.0.0.1:9200/_cluster/health

在一個沒有索引的空集群中運行如上查詢,將返回這些信息:

{
    "cluster_name":          "elasticsearch",
    "status":                "green", <1>
    "timed_out":             false,
    "number_of_nodes":       1,
    "number_of_data_nodes":  1,
    "active_primary_shards": 0,
    "active_shards":         0,
    "relocating_shards":     0,
    "initializing_shards":   0,
    "unassigned_shards":     0
}

status字段提供一個綜合的指標來表示集群的的服務狀況。三種顏色各自的含義:

green所有主要分片和復制分片都可用
yellow所有主要分片可用,但不是所有復制分片都可用
red不是所有的主要分片都可用

其他字段解釋:

  • number_of_nodes 集群內的總節點數
  • number_of_data_nodes 集群內的總數據節點數
  • active_primary_shards 集群內所有索引的主分片總數
  • active_shards 集群內所有索引的分片總數
  • relocating_shards 正在遷移中的分片數
  • initializing_shards 正在初始化的分片數
  • unassigned_shards 未分配到具體節點上的分片數
  • delayed_unassigned_shards 延時待分配到具體節點上的分片數

查看所有索引:

# curl -XGET http://127.0.0.1:9200/_cat/indices?v
	health status index                           uuid                   pri rep docs.count docs.deleted store.size pri.store.size
	green  open   webserver-access-log-2017.11.01 KXbLvV2iT7a7SDTzwmuMpw   5   1      62469            0     89.1mb         44.5mb
	green  open   nginx-access-log-2017.10.31     y0RpxeGVQZ2tRpl1hfDFRw   5   1      12619            0     19.5mb          9.7mb
	green  open   .monitoring-data-2              htaFQHKtRNaJOpGXxIEs3Q   1   1          3            0     14.3kb          7.1kb
	green  open   .monitoring-kibana-2-2017.11.01 lK8587HOS7apx1fsKG8Uow   1   1        654            0    387.6kb        193.8kb
	green  open   nginx-access-log-2017.11.02     JEAqXh9bTiGDjOczhVPhOA   5   1      18863            0     28.6mb         14.3mb
	green  open   .monitoring-es-2-2017.10.31     5oE3xVVPTTKYaflBnNLyUg   1   1        423           78    762.7kb        381.3kb
	green  open   .security                       nu8qiah9S0aw6QR4VXoRcA   1   1          2            0       11kb          5.5kb
	green  open   nginx-access-log-2017.11.01     b8lzWMKWQOuvGAhZOe-Tqw   5   1      62582            0     88.5mb         44.2mb
	green  open   .monitoring-es-2-2017.11.01     cZnvACgzSeicB-s_LCsGaQ   1   1       8768           51        8mb            4mb
	green  open   .kibana                         LRc0dr8MRN6jLhciJDaG2w   1   1          3            0     44.6kb         22.3kb
	green  open   webserver-access-log-2017.11.02 3EkGPnCGTmqegXehcqYYdA   5   1      18863            0     28.4mb         14.2mb
	green  open   webserver-access-log-2017.10.31 kh3cDN3QQCOVz8WrvO6lsQ   5   1      12657            0       20mb           10mb

Elasticsearch單機部署

安裝

# rpm -ivh elasticsearch-7.9.1-x86_64.rpm
# mkdir -p  /data/elk/elasticsearch/{data,logs}
# chown -R elasticsearch:elasticsearch /data/elk/elasticsearch 

配置
jvm.options

-Xms2g
-Xmx2g

elasticsearch.yml

node.name: es_node
cluster.initial_master_nodes: ["es_node"]
path.data: /data/elk/elasticsearch/data
path.logs: /data/elk/elasticsearch/logs
network.host: 0.0.0.0
http.port: 9200

啟動

#/etc/init.d/elasticsearch start 

檢查

# curl 'http://localhost:9200/?pretty'      
{
  "name": "es_node",
  "cluster_name": "elasticsearch",
  "cluster_uuid": "V6kQa4HkR_aTAc3jCDXotA",
  "version": {
    "number": "7.9.1",
    "build_flavor": "default",
    "build_type": "rpm",
    "build_hash": "083627f112ba94dffc1232e8b42b73492789ef91",
    "build_date": "2020-09-01T21:22:21.964974Z",
    "build_snapshot": false,
    "lucene_version": "8.6.2",
    "minimum_wire_compatibility_version": "6.8.0",
    "minimum_index_compatibility_version": "6.0.0-beta1"
  },
  "tagline": "You Know, for Search"
}


免責聲明!

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



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