偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

ElasticSearch+Kibana on K8s 講解與實(shí)戰(zhàn)操作(版本7.17.3)

大數(shù)據(jù) 數(shù)據(jù)倉(cāng)庫(kù)
Elasticsearch 7 引入了集群維護(hù)模式(cluster maintenance mode),允許您更方便地執(zhí)行維護(hù)操作而不影響數(shù)據(jù)平衡。您可以將集群設(shè)置為維護(hù)模式,然后執(zhí)行維護(hù)操作,最后再將集群恢復(fù)到正常狀態(tài)。

一、概述

在 Kubernetes(K8s)上運(yùn)行 Elasticsearch 是一種在容器化環(huán)境中部署和管理 Elasticsearch 集群的常見(jiàn)方法。Elasticsearch 是一款流行的分布式搜索和分析引擎,而 Kubernetes 則提供了一個(gè)出色的平臺(tái),用于編排容器并管理 Elasticsearch 的可伸縮性和容錯(cuò)性。

以下是在 Kubernetes 上部署 Elasticsearch 的一般步驟:

  1. 安裝 Kubernetes 集群:確保你已經(jīng)運(yùn)行起了 Kubernetes 集群。你可以使用托管的 Kubernetes 服務(wù),如 Google Kubernetes Engine(GKE)、Amazon Elastic Kubernetes Service(EKS),或者使用工具如 Minikube、kubeadm 或 kops 自行部署一個(gè)集群。
  2. 存儲(chǔ):Elasticsearch 需要持久化存儲(chǔ)來(lái)存儲(chǔ)其數(shù)據(jù)。你可以使用 Kubernetes 的持久卷(PVs)和持久卷聲明(PVCs)來(lái)為 Elasticsearch 數(shù)據(jù)分配存儲(chǔ)。確保選擇適合你需求的存儲(chǔ)解決方案,如 hostPath、本地存儲(chǔ)或網(wǎng)絡(luò)附加存儲(chǔ)(NAS)。
  3. Elasticsearch YAML 配置:創(chuàng)建一個(gè) YAML 配置文件,用于定義你的 Elasticsearch 集群。此文件應(yīng)包括 Elasticsearch Pod、Service、ConfigMap 和任何所需的環(huán)境變量的規(guī)范。你可以使用官方的 Elasticsearch Helm 圖表或編寫(xiě)自定義的 Kubernetes YAML 文件。
  4. Pod 反親和性:為了確保高可用性,配置反親和性規(guī)則以防止多個(gè) Elasticsearch Pod 在同一節(jié)點(diǎn)上運(yùn)行。這有助于在不同節(jié)點(diǎn)上分布 Elasticsearch Pod 以提高容錯(cuò)性。
  5. 服務(wù)發(fā)現(xiàn):使用 Kubernetes Service 來(lái)在內(nèi)部或外部暴露你的 Elasticsearch 集群,具體取決于你的需求。外部訪問(wèn)通常涉及創(chuàng)建 LoadBalancer 或 NodePort 服務(wù),而內(nèi)部訪問(wèn)可能使用 ClusterIP 服務(wù)。
  6. 密鑰管理:使用 Kubernetes Secrets 來(lái)安全存儲(chǔ)諸如密碼和身份驗(yàn)證令牌等敏感信息。Elasticsearch 需要安全設(shè)置來(lái)控制訪問(wèn)。
  7. 監(jiān)控和日志記錄:實(shí)施監(jiān)控和日志記錄解決方案,如 Prometheus、Grafana 和 Elasticsearch 自身的監(jiān)控功能,以跟蹤集群的健康和性能。
  8. 擴(kuò)展和更新:Kubernetes 可以相對(duì)容易地通過(guò)添加或刪除節(jié)點(diǎn)來(lái)水平擴(kuò)展 Elasticsearch 集群。在更新 Elasticsearch 版本或配置時(shí),請(qǐng)確保有適當(dāng)?shù)纳?jí)策略,以最小化中斷。
  9. 備份和災(zāi)難恢復(fù):建立備份和災(zāi)難恢復(fù)程序,以保護(hù)數(shù)據(jù)和集群的完整性。
  10. 安全和訪問(wèn)控制:實(shí)施適當(dāng)?shù)陌踩胧?,包括身份?yàn)證、授權(quán)和網(wǎng)絡(luò)策略,以保護(hù)你的 Elasticsearch 集群。
  11. 測(cè)試:在 Kubernetes 上徹底測(cè)試你的 Elasticsearch 部署,以確保它在不同工作負(fù)載下表現(xiàn)如預(yù)期。
  12. 文檔:為將來(lái)的參考和你的團(tuán)隊(duì)的利益,記錄你的設(shè)置、配置和部署過(guò)程。

雖然這些步驟提供了在 Kubernetes 上部署 Elasticsearch 的高層次概述,但具體的步驟可能會(huì)根據(jù)你的用例和環(huán)境而有所不同??紤]使用 Kubernetes Operators、Helm 圖表或其他工具來(lái)簡(jiǎn)化在 Kubernetes 中部署和管理 Elasticsearch 集群的過(guò)程。此外,請(qǐng)參考 Elasticsearch 和 Kubernetes 文檔,獲取詳細(xì)的說(shuō)明和最佳實(shí)踐。

圖片

二、ElasticSearch 節(jié)點(diǎn)類(lèi)型與作用

Elasticsearch 節(jié)點(diǎn)類(lèi)型和配置在集群的設(shè)計(jì)和性能優(yōu)化中起著關(guān)鍵作用。以下是一些常見(jiàn)的 Elasticsearch 節(jié)點(diǎn)類(lèi)型以及它們的配置示例:

  • 主節(jié)點(diǎn) (Master Nodes):

作用:主節(jié)點(diǎn)用于管理集群狀態(tài)、索引創(chuàng)建和分片分配。它們不負(fù)責(zé)數(shù)據(jù)存儲(chǔ)或搜索查詢(xún)。

配置示例:

node.master: true
node.data: false
  • 數(shù)據(jù)節(jié)點(diǎn) (Data Nodes):

作用:數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)索引數(shù)據(jù)并執(zhí)行搜索查詢(xún)。

配置示例:

node.master: false
node.data: true
  • 協(xié)調(diào)節(jié)點(diǎn) (Coordinator Nodes):

作用:協(xié)調(diào)節(jié)點(diǎn)用于接收客戶(hù)端請(qǐng)求,并將其路由到數(shù)據(jù)節(jié)點(diǎn)。配置示例:

node.master: false
node.data: false
  • 仲裁節(jié)點(diǎn) (Arbitrator Nodes):

作用:仲裁節(jié)點(diǎn)不存儲(chǔ)數(shù)據(jù),但可以參與主節(jié)點(diǎn)選舉。配置示例:

node.master: true
node.data: false
  • Ingest 節(jié)點(diǎn):

作用:Ingest 節(jié)點(diǎn)用于文檔的預(yù)處理和轉(zhuǎn)換。配置示例:

node.master: false
node.data: false
node.ingest: true
  • Machine Learning 節(jié)點(diǎn):

作用:Machine Learning 節(jié)點(diǎn)用于運(yùn)行 Elasticsearch 的機(jī)器學(xué)習(xí)任務(wù)。配置示例:

node.ml: true
  • Transform 節(jié)點(diǎn):

作用:Transform 節(jié)點(diǎn)用于執(zhí)行數(shù)據(jù)轉(zhuǎn)換操作,將結(jié)果存儲(chǔ)在新的索引中。配置示例:

node.transform: true
  • Remote 節(jié)點(diǎn):

作用:Remote 節(jié)點(diǎn)用于轉(zhuǎn)發(fā)請(qǐng)求到遠(yuǎn)程 Elasticsearch 集群。配置示例:

node.remote_cluster_client: true
  • Hot-Warm-Cold 節(jié)點(diǎn):

作用:Hot 節(jié)點(diǎn)用于接收實(shí)時(shí)數(shù)據(jù),Warm 節(jié)點(diǎn)用于冷熱數(shù)據(jù)分離,Cold 節(jié)點(diǎn)用于長(zhǎng)期存儲(chǔ)。配置示例:

node.attr.hot: true
node.attr.warm: true
node.attr.cold: true

請(qǐng)注意,上述示例是典型的節(jié)點(diǎn)類(lèi)型和配置示例。在實(shí)際的集群配置中,可以根據(jù)需求和性能要求進(jìn)行更詳細(xì)的調(diào)整。配置文件通常是 Elasticsearch 的 elasticsearch.yml,你可以在每個(gè)節(jié)點(diǎn)上的該文件中設(shè)置節(jié)點(diǎn)類(lèi)型和其他相關(guān)配置。根據(jù)需要,你可以將不同的節(jié)點(diǎn)類(lèi)型配置在不同的節(jié)點(diǎn)上,以構(gòu)建具有適當(dāng)角色的 Elasticsearch 集群。同時(shí),還可以使用其他設(shè)置來(lái)調(diào)整內(nèi)存、存儲(chǔ)、網(wǎng)絡(luò)和性能參數(shù),以滿(mǎn)足特定的用例需求。

三、K8s 集群部署

k8s 環(huán)境安裝之前寫(xiě)過(guò)很多文檔,可以參考我以下幾篇文章:

  • 【云原生】k8s 離線部署講解和實(shí)戰(zhàn)操作
  • 【云原生】k8s 環(huán)境快速部署(一小時(shí)以?xún)?nèi)部署完)

四、ElasticSearch on K8s 開(kāi)始部署

1)下載安裝包

地址:https://artifacthub.io/packages/helm/elastic/elasticsearch

# 添加數(shù)據(jù)源
helm repo add elastic https://helm.elastic.co

# 下載
helm pull elastic/elasticsearch --version 7.17.3

# 解壓
tar -xf elasticsearch-7.17.3.tgz

2)構(gòu)建鏡像

Elasticsearch 各版本下載地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

這里就不重新構(gòu)建鏡像了,有不知道怎么構(gòu)建鏡像的小伙伴可以給我留言或私信,這里是將遠(yuǎn)程的鏡像推送到我們本地harbor,加速拉取鏡像。

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.3
docker tag docker.elastic.co/elasticsearch/elasticsearch:7.17.3  registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/elasticsearch:7.17.3

# 上傳鏡像到阿里云鏡像倉(cāng)庫(kù)
docker push registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/elasticsearch:7.17.3

3)修改yaml編排

這里只顯示修改部分,在最后會(huì)提供修改后的git下載地址。

  • elasticsearch/values.yaml
image: "registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/elasticsearch"

### 去掉這幾行
volumeClaimTemplate:
  accessModes: ["ReadWriteOnce"]
  resources:
    requests:
      storage: 30Gi

persistence:
  enabled: true
  labels:
    # Add default labels for the volumeClaimTemplate of the StatefulSet
    enabled: false
  annotations: {}
  accessModes:
    - ReadWriteOnce
  size: 1Gi
  storageClass: "elasticsearch-local-storage"
  local:
  - name: elasticsearch-0
    host: "local-168-182-110"
    path: "/opt/bigdata/servers/elasticsearch/data/data1"
  - name: elasticsearch-1
    host: "local-168-182-111"
    path: "/opt/bigdata/servers/elasticsearch/data/data1"
  - name: elasticsearch-2
    host: "local-168-182-112"
    path: "/opt/bigdata/servers/elasticsearch/data/data1"

protocol: http
httpPort: 9200
transportPort: 9300
service:
  enabled: true
  type: NodePort
  nodePort: 30920
  httpPortName: http
  • elasticsearch/templates/storage-class.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: {{ .Values.persistence.storageClass }}
provisioner: kubernetes.io/no-provisioner
  • elasticsearch/templates/pv.yaml
{{- range .Values.persistence.local }}
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: {{ .name }}
  labels:
    name: {{ .name }}
spec:
  storageClassName: {{ $.Values.persistence.storageClass }}
  capacity:
    storage: {{ $.Values.persistence.size }}
  accessModes:
  {{- range $.Values.persistence.accessModes }}
    - {{ . | quote }}
  {{- end }}
  local:
    path: {{ .path }}
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - {{ .host }}
---
{{- end }}
  • elasticsearch/templates/statefulset.yaml
spec:
  volumeClaimTemplates:
    spec:
# 去掉這行
{{ toYaml .Values.volumeClaimTemplate | indent 6 }}

# 新增以下內(nèi)容:
      accessModes:
      {{- range .Values.persistence.accessModes }}
      - {{ . | quote }}
      {{- end }}
      resources:
        requests:
          storage: {{ .Values.persistence.size | quote }}
    {{- if .Values.persistence.storageClass }}
    {{- if (eq "-" .Values.persistence.storageClass) }}
      storageClassName: ""
    {{- else }}
      storageClassName: "{{ .Values.persistence.storageClass }}"
    {{- end }}
    {{- end }}

4)開(kāi)始部署

# 如果沒(méi)有掛載目錄,則需要提前創(chuàng)建,也可自己更換掛載目錄
# 先創(chuàng)建本地存儲(chǔ)目錄
mkdir -p /opt/bigdata/servers/elasticsearch/data/data1
chmod -R 777 /opt/bigdata/servers/elasticsearch/data/data1

helm install my-elasticsearch ./elasticsearch -n elasticsearch --create-namespace
# 查看
helm get notes my-elasticsearch -n elasticsearch
kubectl get pods,svc -n elasticsearch -owide

# 查看日志
kubectl logs -f elasticsearch-master-0 -n elasticsearch

notes,可以獲取用戶(hù)密碼

NAME: my-elasticsearch
LAST DEPLOYED: Sat Sep  9 22:01:15 2023
NAMESPACE: elasticsearch
STATUS: deployed
REVISION: 1
NOTES:
1. Watch all cluster members come up.
  $ kubectl get pods --namespace=elasticsearch -l app=elasticsearch-master -w
2. Retrieve elastic user's password.
  $ kubectl get secrets --namespace=elasticsearch elasticsearch-master-credentials -ojsnotallow='{.data.password}' | base64 -d
3. Test cluster health using Helm test.
  $ helm --namespace=elasticsearch test my-elasticsearch

5)測(cè)試

賬號(hào):elastic密碼獲?。?/p>

kubectl get secrets --namespace=elasticsearch elasticsearch-master-credentials -ojsnotallow='{.data.password}' | base64 -d

curl 訪問(wèn):

curl http://192.168.182.110:30920/
curl http://192.168.182.110:30920/_cat/nodes
curl http://192.168.182.110:30920/_cat/health?pretty

圖片圖片

6)elasticsearch-head

elasticsearch-head GitHub下載地址:https://github.com/mobz/elasticsearch-headGoogle 瀏覽器 elasticsearch-head 插件:

鏈接:https://pan.baidu.com/s/1kYcTjBDPmSWVzsku2hEW7w?pwd=67v4提取碼:67v4

7)卸載

helm uninstall my-elasticsearch -n elasticsearch

# 刪除數(shù)據(jù)
rm -fr /opt/bigdata/servers/elasticsearch/data/data1/*

五、Kibana 編排部署

地址:https://artifacthub.io/packages/helm/bitnami/kibana?modal=install

1)下載安裝包

helm repo add bitnami https://charts.bitnami.com/bitnami
helm pull bitnami/kibana --version 10.2.6
tar -xf kibana-10.2.6.tgz

2)構(gòu)建鏡像

這里也不重新構(gòu)建鏡像了,只是將鏡像推送到本地harbor加速,對(duì)構(gòu)建鏡像不清楚的可以留言或私信。Kibana 和 Elasticsearch 需保證所用版本互相兼容,版本兼容性:https://www.elastic.co/cn/support/matrix#matrix_compatibility

圖片圖片

docker pull docker.io/bitnami/kibana:7.17.3
docker tag docker.io/bitnami/kibana:7.17.3 registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/kibana:7.17.3

# 上傳鏡像
docker push registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/kibana:7.17.3

3)修改yaml編排

  • kibana/values.yaml
image:
  registry: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative
  repository: kibana
  tag: 7.17.3

replicaCount: 1

persistence:
  enabled: true
  accessModes:
    - ReadWriteOnce
  size: 10Gi
  storageClass: "kibana-local-storage"
  local:
  - name: kibana-0
    host: "local-168-182-111"
    path: "/opt/bigdata/servers/kibana/data/data1"

service:
  ports:
    http: 5601
  type: NodePort
  nodePorts:
    http: "30601"

elasticsearch:
  hosts:
    - elasticsearch-master.elasticsearch
  port: "9200"
  • kibana/templates/values.yaml
{{- range .Values.persistence.local }}
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: {{ .name }}
  labels:
    name: {{ .name }}
spec:
  storageClassName: {{ $.Values.persistence.storageClass }}
  capacity:
    storage: {{ $.Values.persistence.size }}
  accessModes:
  {{- range $.Values.persistence.accessModes }}
    - {{ . | quote }}
  {{- end }}
  local:
    path: {{ .path }}
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - {{ .host }}
---
{{- end }}
  • kibana/templates/storage-class.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: {{ .Values.persistence.storageClass }}
provisioner: kubernetes.io/no-provisioner

4)開(kāi)始部署

# 先創(chuàng)建本地存儲(chǔ)目錄
mkdir -p /opt/bigdata/servers/kibana/data/data1
chmod -R 777 /opt/bigdata/servers/kibana/data/data1

helm install my-kibana ./kibana -n kibana --create-namespace
# 查看
helm get notes my-kibana -n kibana 
kubectl get pods,svc -n kibana -owide

5)測(cè)試驗(yàn)證

kibana web 地址:http://192.168.182.110:30601/

圖片圖片

6)卸載

helm uninstall my-kibana -n kibana
kubectl delete ns kibana --force
ssh local-168-182-111 rm -fr /opt/bigdata/servers/kibana/data/data1/*

六、Elasticsearch7 常見(jiàn)API示例講解

1)ES7 集群狀態(tài)信息 API

要查看 Elasticsearch 7 集群的狀態(tài)和信息,您可以使用以下 API 操作:

1、獲取集群健康狀態(tài)

使用 GET 請(qǐng)求來(lái)獲取集群的健康狀態(tài)。以下是一個(gè)示例:

GET /_cluster/health

這個(gè)請(qǐng)求將返回有關(guān)集群健康狀態(tài)的信息,包括集群名稱(chēng)、狀態(tài)(例如:green、yellow、red)、節(jié)點(diǎn)數(shù)量、分片數(shù)量、副本數(shù)量等。

2、獲取節(jié)點(diǎn)信息

使用 GET 請(qǐng)求來(lái)獲取有關(guān)集群中節(jié)點(diǎn)的信息。以下是一個(gè)示例:

GET /_cat/nodes?v

這個(gè)請(qǐng)求將返回節(jié)點(diǎn)的詳細(xì)信息,包括節(jié)點(diǎn)的名稱(chēng)、IP 地址、節(jié)點(diǎn)角色(主節(jié)點(diǎn)、數(shù)據(jù)節(jié)點(diǎn)、協(xié)調(diào)節(jié)點(diǎn)等)等。

3、獲取索引信息

使用 GET 請(qǐng)求來(lái)獲取有關(guān)集群中索引的信息。以下是一個(gè)示例:

GET /_cat/indices?v

這個(gè)請(qǐng)求將返回索引的詳細(xì)信息,包括索引的名稱(chēng)、狀態(tài)、文檔數(shù)量、分片數(shù)量、副本數(shù)量等。

4、獲取集群設(shè)置信息

使用 GET 請(qǐng)求來(lái)獲取集群的設(shè)置信息。以下是一個(gè)示例:

GET /_cluster/settings

這個(gè)請(qǐng)求將返回有關(guān)集群設(shè)置的信息,包括索引的分片和副本配置、分配策略等。

5、獲取節(jié)點(diǎn)統(tǒng)計(jì)信息

使用 GET 請(qǐng)求來(lái)獲取集群中節(jié)點(diǎn)的統(tǒng)計(jì)信息。以下是一個(gè)示例:

GET /_nodes/stats

這個(gè)請(qǐng)求將返回有關(guān)節(jié)點(diǎn)的各種統(tǒng)計(jì)信息,包括內(nèi)存使用、CPU 使用、磁盤(pán)使用等。

2)POST 與 PUT 請(qǐng)求方式的區(qū)別

在 Elasticsearch 7 中,POST 和 PUT 請(qǐng)求的區(qū)別涉及到文檔的創(chuàng)建和更新。以下是它們之間的主要區(qū)別:

1、POST 請(qǐng)求

  • POST 請(qǐng)求用于創(chuàng)建新文檔或?qū)⑿挛臋n添加到索引中。
  • 當(dāng)使用 POST 請(qǐng)求創(chuàng)建文檔時(shí),Elasticsearch 會(huì)自動(dòng)生成文檔的唯一 ID。
  • 如果在索引中已經(jīng)存在具有指定 ID 的文檔,POST 請(qǐng)求會(huì)失敗,不會(huì)覆蓋已存在的文檔。
  • POST 請(qǐng)求的常見(jiàn)用途包括將新文檔添加到索引中,而不必指定文檔的 ID。

示例使用 POST 請(qǐng)求創(chuàng)建文檔:

POST /my_index/_doc
{
  "name": "John Doe",
  "age": 30
}

2、PUT 請(qǐng)求

  • PUT 請(qǐng)求用于創(chuàng)建新文檔或更新現(xiàn)有文檔。
  • 當(dāng)使用 PUT 請(qǐng)求創(chuàng)建文檔時(shí),需要明確指定文檔的唯一 ID。如果具有相同 ID 的文檔已存在,則 PUT 請(qǐng)求將覆蓋該文檔。
  • PUT 請(qǐng)求的常見(jiàn)用途包括顯式地創(chuàng)建文檔并指定其 ID,以及更新現(xiàn)有文檔的內(nèi)容。

示例使用 PUT 請(qǐng)求創(chuàng)建或更新文檔:

PUT /my_index/_doc/1
{
  "name": "Jane Smith",
  "age": 35
}

總結(jié):

  • 使用 POST 請(qǐng)求時(shí),Elasticsearch 將為您生成文檔的 ID(如果未指定)并將文檔添加到索引中。
  • 使用 PUT 請(qǐng)求時(shí),您需要明確指定文檔的 ID,并且可以用它來(lái)創(chuàng)建新文檔或覆蓋現(xiàn)有文檔。
  • 在某些情況下,根據(jù)需要選擇 POST 或 PUT 請(qǐng)求來(lái)執(zhí)行創(chuàng)建和更新操作。

3)ES7 增刪改查 API

在 Elasticsearch 7 中,您可以使用 RESTful API 執(zhí)行索引數(shù)據(jù)(文檔)的增刪改查操作。以下是一些常見(jiàn)的 Elasticsearch 操作示例及其講解:

1、添加文檔(Indexing)

要將文檔添加到 Elasticsearch 索引中,可以使用 POST 或 PUT 請(qǐng)求。以下是一個(gè)示例:

POST /my_index/_doc/1
{
  "name": "John Doe",
  "age": 30
}

這個(gè)示例使用 POST 請(qǐng)求將一個(gè)文檔添加到名為 my_index 的索引中。文檔的 ID 設(shè)置為 1。如果您使用 PUT 請(qǐng)求,也可以指定文檔的 ID。

2、獲取文檔(Retrieving)

要按 ID 獲取文檔,可以使用 GET 請(qǐng)求。以下是一個(gè)示例:

GET /my_index/_doc/1

這個(gè)示例使用 GET 請(qǐng)求按文檔 ID 1 從索引 my_index 中獲取文檔。

3、更新文檔(Updating)

要更新現(xiàn)有文檔,可以使用 POST 或 PUT 請(qǐng)求。以下是一個(gè)示例:

POST /my_index/_doc/1/_update
{
  "doc": {
    "age": 31
  }
}

這個(gè)示例使用 POST 請(qǐng)求來(lái)更新文檔 ID 1 中的 age 字段的值為 31。

4、刪除文檔(Deleting)

要?jiǎng)h除文檔,可以使用 DELETE 請(qǐng)求。以下是一個(gè)示例:

DELETE /my_index/_doc/1

4)ES7 模板 API

Elasticsearch 7 中引入了索引模板(Index Templates) API,允許您定義模板來(lái)自動(dòng)應(yīng)用于新索引的設(shè)置、映射和別名。這對(duì)于確保索引的一致性和管理大規(guī)模的數(shù)據(jù)非常有用。以下是 Elasticsearch 7 中索引模板 API 的一些示例和解釋?zhuān)?/p>

1、創(chuàng)建索引模板(Put Index Template)

使用 PUT 請(qǐng)求創(chuàng)建索引模板,指定模板的名稱(chēng)和設(shè)置。以下是一個(gè)示例:

PUT /_index_template/my_template
{
  "index_patterns": ["logs-*"],
  "template": {
    "settings": {
      "number_of_shards": 3,
      "number_of_replicas": 2
    },
    "mappings": {
      "properties": {
        "timestamp": {
          "type": "date"
        },
        "message": {
          "type": "text"
        }
      }
    }
  }
}
  • 上述示例創(chuàng)建了一個(gè)名為 my_template 的索引模板,該模板將自動(dòng)應(yīng)用于匹配 logs-* 模式的所有索引。
  • 模板定義了索引的設(shè)置(分片數(shù)量和副本數(shù)量)和映射(字段類(lèi)型和屬性)。

2、獲取索引模板(Get Index Template)

使用 GET 請(qǐng)求獲取特定索引模板的信息。以下是一個(gè)示例:

GET /_index_template/my_template

這個(gè)請(qǐng)求將返回名為 my_template 的索引模板的詳細(xì)信息。

3、列出所有索引模板(List All Index Templates)

使用 GET 請(qǐng)求列出所有已定義的索引模板。以下是一個(gè)示例:

GET /_index_template

4、刪除索引模板(Delete Index Template)

使用 DELETE 請(qǐng)求刪除特定索引模板。以下是一個(gè)示例:

DELETE /_index_template/my_template

5)ES7 冷熱數(shù)據(jù)設(shè)置

Elasticsearch 提供了數(shù)據(jù)熱(hot)和冷(cold)階段的設(shè)置,以幫助優(yōu)化數(shù)據(jù)存儲(chǔ)和查詢(xún)性能,特別是對(duì)于大規(guī)模的時(shí)間序列數(shù)據(jù)(如日志、度量和事件數(shù)據(jù))非常有用。以下是設(shè)置冷熱數(shù)據(jù)的一般步驟和一些配置選項(xiàng):

1、創(chuàng)建索引模板(Index Template)

首先,您可以創(chuàng)建一個(gè)索引模板,以定義新索引的設(shè)置和分配策略,以及索引在不同階段之間的遷移策略。在模板中,您可以指定哪些條件應(yīng)將索引劃分為熱、溫和冷(或其他階段),并定義相應(yīng)的設(shè)置。

以下是一個(gè)示例索引模板,定義了熱、溫和冷階段的索引分配策略:

PUT /_index_template/logs_template
{
  "index_patterns": ["logs-*"],
  "template": {
    "settings": {
      "number_of_shards": 3,
      "number_of_replicas": 1,
      "index.lifecycle.name": "logs_policy",
      "index.lifecycle.rollover_alias": "logs-alias",
      "index.routing.allocation.require.box_type": "hot"
    },
    "mappings": {
      "properties": {
        "timestamp": {
          "type": "date"
        },
        "message": {
          "type": "text"
        }
      }
    }
  }
}
  • 上述示例創(chuàng)建了一個(gè)名為 logs_template 的索引模板,該模板將自動(dòng)應(yīng)用于匹配 logs-* 模式的所有索引。
  • 模板定義了索引的設(shè)置,包括分片數(shù)量、副本數(shù)量、生命周期策略、別名以及索引的映射。

2、創(chuàng)建生命周期策略(Lifecycle Policy)

接下來(lái),創(chuàng)建一個(gè)生命周期策略,以定義索引在不同階段之間的遷移條件和操作。

PUT /_ilm/policy/logs_policy
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_size": "50GB",
            "max_age": "30d"
          }
        }
      },
      "warm": {
        "min_age": "30d",
        "actions": {
          "forcemerge": {
            "max_num_segments": 1
          }
        }
      },
      "cold": {
        "min_age": "90d",
        "actions": {
          "freeze": {},
          "read_only": {}
        }
      },
      "delete": {
        "min_age": "365d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}
  • 上述示例創(chuàng)建了一個(gè)名為 logs_policy 的生命周期策略,定義了四個(gè)不同的生命周期階段:熱、溫、冷和刪除。
  • 每個(gè)階段都有不同的遷移條件和操作,例如,熱階段在索引大小達(dá)到50GB或存在30天后執(zhí)行滾動(dòng)操作。

3、創(chuàng)建索引并將其分配到不同的節(jié)點(diǎn):

現(xiàn)在,當(dāng)您創(chuàng)建新的日志索引時(shí),它將自動(dòng)應(yīng)用索引模板和生命周期策略,以及分配到熱節(jié)點(diǎn)。

4、自動(dòng)數(shù)據(jù)遷移:

一旦索引和生命周期策略配置完成,Elasticsearch 將自動(dòng)執(zhí)行索引的遷移操作。數(shù)據(jù)將根據(jù)生命周期策略從一個(gè)階段遷移到另一個(gè)階段,以?xún)?yōu)化性能和降低存儲(chǔ)成本。

這個(gè)設(shè)置允許您根據(jù)數(shù)據(jù)的訪問(wèn)模式和重要性來(lái)優(yōu)化 Elasticsearch 集群的性能和成本效益。新的日志數(shù)據(jù)將從熱存儲(chǔ)階段自動(dòng)遷移到溫存儲(chǔ)和冷存儲(chǔ)階段,從而使熱節(jié)點(diǎn)保持高性能,同時(shí)降低了冷數(shù)據(jù)的存儲(chǔ)成本。

6)ES7 數(shù)據(jù)平衡 API

雖然不推薦手動(dòng)分片遷移,但您可以使用以下 API 將分片從一個(gè)節(jié)點(diǎn)遷移到另一個(gè)節(jié)點(diǎn):

POST /_cluster/reroute
{
  "commands": [
    {
      "move": {
        "index": "your_index",
        "shard": 0,
        "from_node": "source_node",
        "to_node": "destination_node"
      }
    }
  ]
}

這個(gè)操作需要非常小心,因?yàn)殄e(cuò)誤的分片移動(dòng)可能會(huì)導(dǎo)致數(shù)據(jù)丟失或集群不穩(wěn)定。因此,只有在非常特殊的情況下才應(yīng)該手動(dòng)干預(yù)分片分配。

7)ES7 禁用數(shù)據(jù)平衡 API

在 Elasticsearch 7 中,默認(rèn)情況下,數(shù)據(jù)平衡是自動(dòng)啟用的,它確保數(shù)據(jù)均勻分布在集群的各個(gè)節(jié)點(diǎn)和分片之間。然而,有時(shí)您可能需要禁用數(shù)據(jù)平衡,尤其是在特定情況下,例如集群維護(hù)期間或者出現(xiàn)異常情況時(shí)。以下是禁用數(shù)據(jù)平衡的方法:

1、設(shè)置節(jié)點(diǎn)屬性

Elasticsearch 允許您為節(jié)點(diǎn)設(shè)置屬性(node attributes)。您可以通過(guò)設(shè)置節(jié)點(diǎn)的屬性來(lái)控制數(shù)據(jù)平衡的行為。例如,您可以為節(jié)點(diǎn)設(shè)置一個(gè)自定義屬性,然后在進(jìn)行集群維護(hù)期間,通過(guò)將節(jié)點(diǎn)標(biāo)記為不可分配(disable allocation)來(lái)禁用數(shù)據(jù)平衡。

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.exclude._name": "node_name"
  }
}

在上面的示例中,將 node_name 替換為您要禁用數(shù)據(jù)平衡的節(jié)點(diǎn)名稱(chēng)。

2、暫時(shí)禁用數(shù)據(jù)平衡

您可以使用以下 API 暫時(shí)禁用數(shù)據(jù)平衡,直到您重新啟用它。這可以在進(jìn)行特定維護(hù)操作時(shí)使用。

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.enable": "none"
  }
}

這將暫時(shí)禁用數(shù)據(jù)平衡,直到您通過(guò)以下方式重新啟用它:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.enable": "all"
  }
}

3、集群維護(hù)模式

Elasticsearch 7 引入了集群維護(hù)模式(cluster maintenance mode),允許您更方便地執(zhí)行維護(hù)操作而不影響數(shù)據(jù)平衡。您可以將集群設(shè)置為維護(hù)模式,然后執(zhí)行維護(hù)操作,最后再將集群恢復(fù)到正常狀態(tài)。

啟用維護(hù)模式:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.cluster_maintenance_mode": "enable"
  }
}

執(zhí)行維護(hù)操作后,禁用維護(hù)模式:

PUT /_cluster/settings
{
  "transient": {
    "cluster.routing.allocation.cluster_maintenance_mode": "disable"
  }
}

請(qǐng)注意,在維護(hù)模式下,Elasticsearch 會(huì)暫時(shí)禁用自動(dòng)分片分配和數(shù)據(jù)平衡,以便您可以執(zhí)行維護(hù)操作。

無(wú)論您使用哪種方法,都應(yīng)小心使用禁用數(shù)據(jù)平衡的功能,并確保在維護(hù)操作完成后重新啟用它,以保持集群的健康狀態(tài)。

責(zé)任編輯:武曉燕 來(lái)源: 大數(shù)據(jù)與云原生技術(shù)分享
相關(guān)推薦

2022-10-14 07:42:50

LuceneHTTPWeb

2022-10-10 12:54:00

Flink運(yùn)維

2023-03-06 07:19:50

2022-11-08 08:55:31

2023-03-07 07:56:37

Sqoopk8s底層

2023-03-03 07:54:21

2023-02-27 07:40:00

2023-03-01 07:42:12

HBase編排部署數(shù)據(jù)

2022-11-06 21:31:11

云原生Sentinel集群模式

2023-11-06 01:17:25

主機(jī)容器選項(xiàng)

2023-08-29 10:27:32

2023-09-06 08:12:04

k8s云原生

2024-02-01 09:48:17

2022-11-28 17:22:32

高可用master節(jié)點(diǎn)

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2023-09-08 08:09:12

k8sservice服務(wù)

2023-01-26 23:59:24

Ansibleplaybook列表

2023-12-05 18:16:59

LTS版本K8s

2023-11-30 08:08:30

k8s優(yōu)雅停機(jī)

2023-11-06 07:16:22

WasmK8s模塊
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)