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、创建服务文件
下面的
User和elasticsearch因个人而定,这里默认采用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、匹配查询
默认查询元素元素为
name、age、birthday
# 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、多字段匹配
分词后查询
这里采用搜索name和nick_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"}
}'
相关文章:
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、通配符及前缀…...
Java 24 学习
一、Java 24的核心新功能 1、语言特性增强 模式匹配与原始类型支持(JEP 488):允许在instanceof和switch中使用原始类型,简化模式匹配代码,尤其适用于AI推理场景912。 灵活的构造函数体(JEP 492ÿ…...
【前端 vue 或者麦克风,智能语音识别和播放功能】
前端 vue 或者麦克风,智能语音识别和播放功能 1. 终端安装 npm install recordrtc2.引入 import RecordRTC from recordrtc3.html(根据自己业务更改) <div class"Page"><el-form ref"mainFormRef" class&qu…...
3.23 代码随想录第二十四天打卡
122.买卖股票的最佳时机II (1)题目描述: (2)解题思路: class Solution { public:int maxProfit(vector<int>& prices) {int result 0;for (int i 1; i < prices.size(); i) {result max(prices[i] - prices[i - 1], 0);}return result;} }; (3)总结: 1.假…...
Python---数据分析(Pandas十一:二维数组DataFrame统计计算二)
1、std 用于计算 DataFrame 中数值的标准差。 DataFrame.std(axis0, skipnaTrue, ddof1, numeric_onlyFalse, **kwargs) 描述说明axis {0 或 ‘index’, 1 或 ‘columns’, None}, 默认为 0。这个参数决定了计算标准差是在哪个轴上进行: 如果 axis0 或 axisindex&…...
OpenCV平滑处理:图像去噪与模糊技术详解
引言 在图像处理中,噪声是一个常见的问题,它可能来自于图像采集设备、传输过程或环境干扰。为了去除噪声并改善图像质量,平滑处理(Smoothing)是一种常用的技术。OpenCV提供了多种平滑处理方法,包括均值滤波…...
【LeetCode】大厂面试算法真题回忆(36)--相同数字的积木游戏
题目描述 小华和小薇一起通过玩积木游戏学习数学。他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。 小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同且所处位置最远的2块积木块,计算他们的距离…...
使用Python将视频转化为gif
使用Python将视频转化为gif 一、前言二、准备三、测试 一、前言 最近想把喜欢的视频片段作成gif,就试着用Python做了下,感觉效果还行,这里做个记录。 二、准备 先下载安装对应的库,命令如下: pip install moviepy …...
HTTP长连接与短连接的前世今生
HTTP长连接与短连接的前世今生 大家好!作为一名在互联网摸爬滚打多年的开发者,今天想跟大家聊聊HTTP中的长连接和短连接这个话题。 记得我刚入行时,对这些概念一头雾水,希望这篇文章能帮助新入行的朋友少走些弯路。 什么是HTTP…...
批量将 PPT 文档中的图片提取到文件夹
在 PPT 文档中我们可以插入很多的图片来丰富我们的幻灯片页面,但是当我们需要将 PPT 幻灯片中的图片提取出来的时候,会非常的麻烦,因为我们需要打开 PPT 然后将图片保存起来。会非常的耗费我们的时间和精力。今天给大家介绍的就是一种批量将 …...
yolo目标检测算法在DJI上的研究分析(大纲)
yolo目标检测算法在DJI上的研究分析 面向边缘计算的实时目标检测系统设计与部署 第一章 绪论 1.1 研究背景与意义 目标检测技术需求: DJI设备(如无人机、摄像头)在安防、巡检、农业等场景中的广泛应用现有YOLO算法在高分辨率图像或资源受限…...
图像处理篇:图像预处理——从数据到模型的桥梁
图像预处理是计算机视觉任务中至关重要的一环,它直接影响模型的训练效果和推理性能。无论是深度学习还是传统机器学习,图像预处理都是不可或缺的步骤。本文将深入探讨图像预处理的核心技术、常见方法及其在实际应用中的最佳实践,帮助你从零开…...
MyBatisPlus(SpringBoot版)学习第二讲:基本CRUD
目录 1.BaseMapper 2. 基本CRUD 1. 插入一条记录 2. 删除 1>. 根据ID删除 2>. 根据实体(ID)删除 3>. 根据columnMap条件删除 4>. 根据entity条件删除 5>. 根据ID批量删除 3. 修改 1>. 根据ID修改 2>. 根据whereEntity条…...
SAP-ABAP:SAP系统架构技术白皮书
SAP系统架构技术白皮书 模块化设计 高性能扩展 智能优化 一、核心架构:三层模型技术解析 架构拓扑图 [用户端] ←HTTP/DIAG→ [应用服务器集群] ←SQL→ [数据库服务器] │ │ └─SAP GUI/Web───┘ 分层技术指标对比 架构层组件构成性能…...
Django REST Framework 请求封装源码解析与实现流程
版本说明: Django: V4.2.20 Django Rest Framework: V3.15.2 一、核心封装流程示意图 #mermaid-svg-qXJLIa9Bx1TCiPSN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qXJLIa9Bx1TCiPSN .error-icon{fill…...
RK3588开发笔记-buildroot添加telnet服务
目录 前言 一、Telnet服务背景与适用场景 二、telnet服务开启 Busybox 配置 三、固件编译及烧录 RK3588烧录验证 客户端连接测试 3.1 Linux/MacOS连接 3.2 Windows连接 总结 前言 本文主要介绍在RK3588 SDK文件包中添加telnet服务,由于sdk buildroot默认添加的是ssh服…...
基于Spring Boot的企业内管信息化系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
Bitcoin Thunderbolt 内测通道开启,加速比特币交易新时代
比特币作为全球领先的加密货币,一直占据着去中心化金融的核心地位。然而,随着比特币生态的不断扩展,其交易速度和扩容问题逐渐成为制约发展的关键瓶颈。为解决这一难题, 比特币雷电网络(Bitcoin Thunderbolt࿰…...
STM32 模拟SPI 模式0
SPI 模式 0 的时钟极性(CPOL)为 0,时钟相位(CPHA)为 0。CPOL 0 意味着时钟信号空闲时为低电平,CPHA 0 表示在时钟信号的第一个跳变沿(上升沿)进行数据采样。 #include "stm3…...
QT笔记----QCheckBox
文章目录 概要1、QCheckBox 的基本概念2、单个QCheckBox3、多个QCheckBox同时应用3.1、实现效果3.2、实现Demo 概要 在 Qt 应用程序开发中,QCheckBox 是一个常用的用户界面元素,它允许用户在两种状态(选中和未选中)之间进行切换&a…...
GR00T N1——英伟达开源的通用人形VLA:类似Helix的快与慢双系统,且可类似ViLLA利用海量的无标注视频做训练
前言 就在昨天3.19日的凌晨,英伟达发布的GR00T N1还是很有含金量的(上午已有好几个朋友私我了),由此可以看到很多相关工作的影子,比如helix π0 LAPA,具体而言,其具有双系统架构 VLM模块(系统2)通过视觉和语言指令解…...
Bash 脚本基础
一、Bash 脚本基础 什么是 Bash 脚本:Bash 脚本是一种文本文件,其中包含了一系列的命令,这些命令可以被 Bash shell 执行。它用于自动化重复性的任务,提高工作效率。 Bash 脚本的基本结构:以 #!/bin/bash 开头&#x…...
SQLite Delete 语句详解
SQLite Delete 语句详解 SQLite 是一种轻量级的数据库管理系统,广泛应用于移动设备、嵌入式系统和服务器端应用。在数据库管理中,删除数据是一项基本操作。SQLite 提供了强大的删除功能,本文将详细介绍 SQLite 的 Delete 语句及其用法。 1.…...
Mysql深分页的解决方案
在数据量非常大的情况下,深分页查询则变得很常见,深分页会导致MySQL需要扫描大量前面的数据,从而效率低下。例如,使用LIMIT 100000, 10时,MySQL需要扫描前100000条数据才能找到第10000页的数据。 在MySQL中解决深分页…...
数据建模流程: 概念模型>>逻辑模型>>物理模型
数据建模流程 概念模型 概念模型是一种高层次的数据模型,用于描述系统中的关键业务概念及其之间的关系。它主要关注业务需求和数据需求,而不涉及具体的技术实现细节。概念模型通常用于在项目初期帮助业务人员和技术人员达成共识,确保对业务需…...
光谱仪与光谱相机的核心区别与协同应用
一、核心功能与数据维度 光谱仪 功能定位:专注单点或线状区域的光谱分析,通过色散元件(光栅/棱镜)分离波长,生成一维或二维光谱曲线,用于量化光强、吸收率等参数。 数据维度:输…...
路由工程师大纲-2:结合AI技术构建路由拓扑与BGP异常检测的知识链体系
一、领域交叉技术图谱 1. 路由拓扑测绘: 图神经网络(GNN):建模网络结构,预测链路稳定性。复杂网络分析:计算节点中心性(如PageRank)、社区发现(Louvain算法)。可视化工具:Gephi/NetworkX + PyTorch Geometric(图嵌入)。2. BGP异常检测: 时间序列模型:LSTM/Tran…...
运行时智控:PanLang 开发者指南(一)运行时系统核心模块实现——PanLang 原型全栈设计方案与实验性探索5
运行时智控:PanLang 开发者指南(一)运行时系统核心模块实现——PanLang 原型全栈设计方案与实验性探索5 文章目录 运行时智控:PanLang 开发者指南(一)运行时系统核心模块实现——PanLang 原型全栈设计方案与…...
再次理解 Spring 中的 IOC、DI、AOP 与多态
目录 引言 1. IOC(控制反转) 1.1 什么是 IOC? 1.2 IOC 的核心思想 1.3 IOC 的实现 2. DI(依赖注入) 2.1 什么是 DI? 2.2 DI 的实现方式 2.3 DI 的核心作用 3. AOP(面向切面编程&#x…...
rocky linux 与centos系统的区别
Rocky Linux 和 CentOS 都是基于 Red Hat Enterprise Linux(RHEL)的社区发行版,但两者在目标定位、更新策略和社区管理上有显著差异。以下是核心区别的详细对比: 一、背景与定位 特性Rocky LinuxCentOS起源由 CentOS 联合创始人…...
