elasticsearch 通用筆記

文章目錄

  • 一、前言
  • 二、內容說明
    • 1、目錄簡介
    • 2、本文例子前提內容
  • 三、操作內容
    • 1、設置ES為服務
    • 2、查看健康度
      • 參數解析
    • 3、索引相關查詢
      • 3.1、查詢指定索引內容
        • 3.1.1、匹配查詢
        • 3.1.2、精確匹配(不嘗試分詞)
        • 3.1.3、范圍查詢
        • 3.1.4、id查詢
        • 3.1.5、通配符及前綴匹配
        • 3.1.6、正則表達式模式(最佳混淆匹配方案)
        • 3.1.7、多字段匹配
        • 3.1.8、函數分數查詢(業務處理計算使用)
        • 3.1.9、布爾查詢(組合查詢方法)
      • 3.2、查詢mapping
      • 3.3、查詢所有索引信息
      • 3.4、移除索引
      • 3.5、統計條數
  • 四、常見問題處理
    • 1、數據遷移處理
    • 2、處理shard 滿的問題
    • 3、最大子句數量 設置問題
    • 4、分片配置檢測(通常關閉了分片)

一、前言

本文主要敘述ES的結構,基礎查詢 和部分調用實踐內容,主要以 7.x 版本為基準

二、內容說明

1、目錄簡介

bin/ 包含 Elasticsearch 的啟動腳本和管理工具

比如 elasticsearch(啟動服務)和插件管理工具 elasticsearch-plugin 等。

config/ 保存 Elasticsearch 的配置文件。

主要包括:

  • elasticsearch.yml: 核心配置文件,用于定義集群名稱、節點設置、網絡綁定等。

  • jvm.options: 用于配置 JVM 相關參數,例如堆大小、垃圾回收設置。

  • log4j2.properties: 配置日志記錄參數。

data/ 存儲實際的索引數據。

每個節點的所有索引及其分片數據都保存在這個目錄中。

logs/ 存儲 Elasticsearch 的日志文件。

modules/ 保存 Elasticsearch 核心功能模塊

比如內置的分析器或監控功能。通常不需要手動干預。

plugins/ 保存已安裝的插件,每個插件都有一個單獨的子目錄。

例如 Kibana 連接插件或安全插件。

lib/ 包含 Elasticsearch 運行所需的核心類庫和依賴包。

2、本文例子前提內容

  • 默認部署的ip地址192.168.6.8
  • 用戶組及用戶elasticsearch:elasticsearch
  • 安裝目錄/opt/elasticsearch
  • 測試索引my_index

三、操作內容

1、設置ES為服務

1.1、創建服務文件

下面的 Userelasticsearch 因個人而定,這里默認采用elasticsearch 用戶組

sudo nano /etc/systemd/system/elasticsearch.service
[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target[Service]
Type=simple
User=elasticsearch
Group=elasticsearch
ExecStart=/opt/elasticsearch/bin/elasticsearch
Restart=always
LimitNOFILE=65535
LimitNPROC=4096[Install]
WantedBy=multi-user.target

1.2、重新加載守護進程(識別新服務文件)

sudo systemctl daemon-reload

1.3、設置自啟動及啟停操作

# 設置自啟動
sudo systemctl enable elasticsearch
# 啟動服務
sudo systemctl start elasticsearch
# 關閉服務
sudo systemctl stop elasticsearch
# 檢測服務狀態
sudo systemctl staus elasticsearch

2、查看健康度

curl -XGET 'http://192.168.6.8:9200/_cluster/health?pretty=true

響應示例

{"cluster_name" : "elasticsearch","status" : "yellow","timed_out" : false,"number_of_nodes" : 3,"number_of_data_nodes" : 2,"active_primary_shards" : 10,"active_shards" : 20,"relocating_shards" : 0,"initializing_shards" : 0,"unassigned_shards" : 10,"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 66.7
}

參數解析

參數名稱含義
cluster_name表示 Elasticsearch 集群的名稱。
status集群健康狀態,可能值為:green(健康)、yellow(有未分配副本分片)、red(有未分配主分片)。
number_of_nodes當前集群中節點的總數量,包括主節點和數據節點。
number_of_data_nodes當前集群中負責存儲和查詢數據的節點數量。
active_primary_shards當前處于活躍狀態的主分片數量。
unassigned_shards當前未分配到任何節點的分片數。
number_of_pending_tasks集群中等待處理的任務數量。
active_shards_percent_as_number活躍分片的百分比,例如 66.7 表示當前 66.7% 的分片是活躍狀態。

3、索引相關查詢

基礎查詢格式

curl -XGET 'http://192.168.6.8:9200/my_index/_search?pretty' -H "Content-Type: application/json" -d '{"query": {"match_all": {}}
}'

3.1、查詢指定索引內容

3.1.1、匹配查詢

默認查詢元素元素為 nameagebirthday

# keyword替換值
# 【分詞匹配】 : match
# 【短語完全匹配】 : match_phrase
{"query": {"{{keyword}}": {"name": "ringo lam"}}
}
3.1.2、精確匹配(不嘗試分詞)
# keyword替換值
# 【精確匹配】 : termvalue : "ringo lam"
# 【短語完全匹配】 : termsvalue : ["lao wu", "lao liu"]{"query": {"{{keyword}}": {"name": {{value}}}}
}
3.1.3、范圍查詢

主要針對數字會比較好,日期上偶爾會有點問題

# 數字示例
{"query": {"range": {"age": {"gte": 10,"lte": 20}}}
}# 日期示例
{"query": {"range": {"birthday": {"gte": "2020-03-01",  // 起始日期"lte": "2023-03-31",  // 截止日期"format": "yyyy-MM-dd" // 日期格式 (可選)}}}
}
3.1.4、id查詢

根據文檔的 _id 搜索文檔

{"query": {"ids": {"values": ["1", "2"]}}
}
3.1.5、通配符及前綴匹配

通配符模式,通常可以使用如下內容

  • *:匹配 零個或多個任意字符(包括空字符)。
  • ?:匹配 單個任意字符。
# keyword替換值
# 【指定前綴開頭匹配】 : prefixvalue : "lao"
# 【通配符匹配】 : wildcardvalue : "lao*"{"query": {"{{keyword}}": {"name": {{value}}}}
}
3.1.6、正則表達式模式(最佳混淆匹配方案)

這里可以盡情發揮正則的匹配內容,性能上有損耗

{"query": {"regexp": {"name": "lao.*"}}
}
3.1.7、多字段匹配

分詞后查詢
這里采用搜索 namenick_name字段

{"query": {"multi_match": {"query": "lao liu","name": ["name", "nick_name"]}}
}
3.1.8、函數分數查詢(業務處理計算使用)

待清空業務關系后,完善補充

3.1.9、布爾查詢(組合查詢方法)

組合多個條件來綜合查詢,主要增加過濾的條件
可以使用 must(必須匹配)、should(可以匹配)或 must_not(禁止匹配)

{"query": {"bool": {"must": [{ "match": { "name": "lao liu" } }],"should": [{ "match": { "name": "lao wu" } }],"must_not": [{ "term": { "name": "lao san" } }]}}

3.2、查詢mapping

curl -XGET 'http://192.168.6.8:9200/my_index/_mappings?pretty'

3.3、查詢所有索引信息

curl -XGET 'http://192.168.6.8:9200/_cat/indices?v`
參數名稱含義
health索引的健康狀態:green(健康)、yellow(有未分配副本分片)、red(有未分配主分片)。
status索引的狀態:open 表示索引是打開的,close 表示索引被關閉。
index索引的名稱。
uuid索引的唯一標識符,用于區分不同的索引。
pri主分片的數量,即該索引擁有的主分片數量。
rep副本分片的數量,即每個主分片有多少副本。
docs.count當前索引中的文檔總數,包括主分片和副本分片的總和。
docs.deleted已被標記為刪除但尚未從磁盤中物理刪除的文檔數量。
store.size索引占用的總磁盤空間大小,包括主分片和副本分片。
pri.store.size主分片占用的磁盤空間大小,僅包含主分片的存儲大小。

3.4、移除索引

這里默認測試id 6bd3b7e63f844886909e66c7f5548b50

curl -XDELETE 'http://192.168.6.8:9200/my_index/_doc/6bd3b7e63f844886909e66c7f5548b50'

3.5、統計條數

curl -XGET 'http://192.168.6.8:9200/my_index/_count?pretty' 

四、常見問題處理

1、數據遷移處理

參考數據遷移篇章

2、處理shard 滿的問題

使用Head插件或者Kibana的Dev Tools 執行如下命令(通過下面的命令重啟es會失效,因為 transient 是臨時生效的):

1、api配置 (臨時處理,重啟后失效)

curl -X PUT "http://192.168.6.8:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d '
{"persistent" : {"cluster" : {"max_shards_per_node" : "10000"}}
}'

2、通過 elasticsearch.yml 文件配置(永久處理)
cluster.max_shards_per_node: 10000

3、校驗配置

curl "http://192.168.6.8:9200/_cluster/settings?pretty"

3、最大子句數量 設置問題

查詢時報錯
示例錯誤:QueryPhaseExecutionException[failed to execute query]; nested: TooManyClauses[maxClauseCount is set to 1024];

1、api配置 (臨時處理,重啟后失效)

curl -X PUT "http://192.168.6.8:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d '
{"persistent" : {"indices.query.bool.max_clause_count" : "2048"}
}'

2、通過 elasticsearch.yml 文件配置:
indices.query.bool.max_clause_count: 2048

3、校驗配置

curl "http://192.168.6.8:9200/_cluster/settings?pretty"

4、分片配置檢測(通常關閉了分片)

集群可用

1、檢測分片
curl -XGET 'http://localhost:9200/_cluster/settings?pretty'

2、開啟分片配置

curl -XPUT 'http://localhost:9200/_cluster/settings' -H 'Content-Type: application/json' -d '{"transient": {"cluster.routing.allocation.enable": "all"}
}'

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/74355.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74355.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/74355.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

windows安裝配置FFmpeg教程

1.先訪問官網:https://www.gyan.dev/ffmpeg/builds/ 2.選擇安裝包Windows builds from gyan.dev 3. 下滑找到release bulids部分,選擇ffmpeg-7.0.2-essentials_build.zip 4. 然后解壓將bin目錄添加path系統變量:\ffmpeg-7.0.2-essentials_bui…

強大的AI網站推薦(第二集)—— V0.dev

網站:V0.dev 號稱:前端開發神器,專為開發人員和設計師設計,能夠使用 AI 生成 React 代碼 博主評價:生成的UI效果太強大了,適合需要快速創建UI原型的設計師和開發者 推薦指數:🌟&…

c#知識點補充4

1.發布者訂閱模式 發布者 訂閱者 倆者直接的關聯使用

01、聊天與語言模型

一、簡單說明模型 LLM目前有兩種API提供 LanguageModel:接收一個a作為輸入并返回一個b作為輸出,這種是已經過時的ChatLanguageModel:接收多個輸入,然后返回相應的輸出 ChatLanguaggeModel是LangChain4j中LLM交互低級API&#x…

SQL的DCL,DDL,DML和DQL分別是什么

SQL(Structured Query Language)包括以下四種主要語言類別,分別用于不同的數據庫操作: 1. DCL(Data Control Language,數據控制語言) 用于控制數據庫訪問權限和安全。 常見命令: …

spring boot maven一欄引入本地包

1、在項目跟目錄下建立文件夾&#xff0c;比如libs 2、maven依賴 <dependency><groupId>com.hikvision.ga</groupId><artifactId>artemis-http-client</artifactId><version>1.1.10</version><scope>system</scope>&l…

連續型隨機變量及其分布

連續型隨機變量 數學公式可以看作一門精確描述事物的語言&#xff0c;比語言尤其是漢語的模糊性精確多了&#xff01;離散型數據的處理可以通過枚舉和相加進行處理。而連續型數據則沒有辦法這樣處理。我們必須要通過函數和取值區間還有微積分計算。 &#xff3b;定義1&#x…

AI重構SEO關鍵詞優化路徑

內容概要 人工智能技術的深度應用正在推動SEO優化進入全新階段。傳統關鍵詞優化依賴人工經驗與靜態規則&#xff0c;存在效率瓶頸與策略滯后性缺陷。AI技術通過智能語義分析系統&#xff0c;能夠穿透表層詞匯限制&#xff0c;精準捕捉用戶搜索意圖的語義關聯網絡&#xff0c;結…

turnjs圖冊翻書效果

npm install https://github.com/igghera/turn.js.git //或者 npm install turn.js //import $ from "jquery"; //記得引入jquery import turn.js; // 引入 Turn.jsimport turn from "/utils/turn.min.js";// 引入 Turn.jsinitBook(length) {var that thi…

用PostgreSQL玩轉俄羅斯方塊:當SQL成為游戲引擎

當DBA開始摸魚2025年某深夜&#xff0c;一位不愿透露姓名的DBA為了在監控大屏上隱藏游戲行為&#xff0c;竟用SQL實現了俄羅斯方塊&#xff01;從此&#xff0c;SELECT成了方向鍵&#xff0c;UPDATE成了旋轉指令&#xff0c;DELETE成了消除大招。本文將揭秘這個瘋狂項目的技術內…

計算機網絡層超全解析:從IP協議到路由算法

&#x1f310; &#xff08;專業詳解生活化類比&#xff0c;邏輯一鏡到底&#xff09; &#x1f4d6; 網絡層的核心使命 核心任務&#xff1a;在不同網絡間為數據包選擇最佳路徑&#xff0c;實現端到端通信。 類比&#xff1a;快遞公司總部&#xff08;網絡層&#xff09;根據…

代碼隨想錄算法訓練營第38天 | 322. 零錢兌換 279.完全平方數 139.單詞拆分 背包問題總結

322. 零錢兌換 如果求組合數就是外層for循環遍歷物品&#xff0c;內層for遍歷背包。 如果求排列數就是外層for遍歷背包&#xff0c;內層for循環遍歷物品。 錢幣有順序和沒有順序都可以&#xff0c;都不影響錢幣的最小個數。 視頻講解&#xff1a;動態規劃之完全背包&#xff0…

關于網絡的一點知識(持續更新)

1、IP地址和子網掩碼、端口號: IP地址是設備在網絡上的地址,相當于一棟房子的門牌號。子網掩碼相當于房子所在的街道。同一條街道的房子間是通過街道直通的,主人可以互相拜訪。 舉個例子,如下圖所示。 說明:將兩臺設備的IP和子網掩碼轉化為二進制,然后將各自的IP地址和…

Idea中使用Git插件_合并當前分支到master分支_沖突解決_很簡單---Git工作筆記005

由于之前用svn習慣了,用的git少,其實在idea中使用git,解決沖突,合并分支,非常的簡單,一起來看一下吧. 一定要注意操作之前,一定要確保自己的分支代碼,都已經commit提交了,并且push到遠程了. 不要丟東西. 可以看到首先,在idea的左下角有個 git,點開以后 可以看到有顯示的分支…

[自動化] 【八爪魚】使用八爪魚實現CSDN文章自動閱讀腳本

在CSDN上&#xff0c;文章的閱讀量往往是衡量內容影響力的一個重要指標。為了測試自動化手段能否提高閱讀數&#xff0c;我嘗試使用網頁自動化工具來模擬人工閱讀某個ID的文章。 1. 網頁自動化的常見方案 談到網頁自動化&#xff0c;Selenium 是一個最常見的選擇。它可以通過…

Linux 系統性能優化高級全流程指南

Linux 系統性能優化高級全流程指南 一、系統基礎狀態捕獲 1. 系統信息建檔 除了原有的硬件、內核和存儲拓撲信息收集&#xff0c;還增加 CPU 緩存、網絡設備詳細信息等。 # 硬件信息 lscpu > /opt/tuning/lscpu.origin dmidecode -t memory > /opt/tuning/meminfo.or…

常?中間件漏洞--Tomcat

tomcat是?個開源?且免費的jsp服務器&#xff0c;默認端? : 8080&#xff0c;屬于輕量級應?服務器。它可以實現 JavaWeb程序的裝載&#xff0c;是配置JSP&#xff08;Java Server Page&#xff09;和JAVA系統必備的?款環境。 1.CVE-2017-12615 Tomcat put?法任意?件寫…

數據結構之棧(C語言)

數據結構之棧&#xff08;C語言&#xff09; 棧1 棧的概念與結構2 棧的初始化和銷毀2.1 棧的初始化2.2 棧的銷毀 3 入棧函數與出棧函數3.1 入棧函數3.2 出棧函數 4 取棧頂數據&#xff0c;獲取數據個數 和 判空函數4.1 取棧頂數據與獲取數據個數4.1.1 取棧頂數據4.1.2 獲取數據…

datawhale組隊學習--大語言模型—task4:Transformer架構及詳細配置

第五章 模型架構 在前述章節中已經對預訓練數據的準備流程&#xff08;第 4 章&#xff09;進行了介紹。本章主 要討論大語言模型的模型架構選擇&#xff0c;主要圍繞 Transformer 模型&#xff08;第 5.1 節&#xff09;、詳細 配置&#xff08;第 5.2 節&#xff09;、主流架…

BP神經網絡+NSGAII算法(保真)

BP神經網絡NSGAII算法 非常適合用來當作實驗驗證自己的結論&#xff0c;構建一個神經網絡模型&#xff0c;并使用NSGAII多目標優化算法來實現多領域的畢業論文的設計。僅僅使用簡單的matlab代碼就可以實現自己的多目標優化任務。 BP神經網絡算法 我的任務是預測三個變量的值…