elasticsearch 通用笔记

news2025/3/29 9:13:03

文章目录

  • 一、前言
  • 二、内容说明
    • 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替换值
# 【精确匹配】 : term
	value : "ringo lam"
# 【短语完全匹配】 : terms
	value : ["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替换值
# 【指定前缀开头匹配】 : prefix
	value : "lao"
# 【通配符匹配】 : wildcard
	value : "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.coloradmin.cn/o/2321088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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。这个参数决定了计算标准差是在哪个轴上进行&#xff1a; 如果 axis0 或 axisindex&…

OpenCV平滑处理:图像去噪与模糊技术详解

引言 在图像处理中&#xff0c;噪声是一个常见的问题&#xff0c;它可能来自于图像采集设备、传输过程或环境干扰。为了去除噪声并改善图像质量&#xff0c;平滑处理&#xff08;Smoothing&#xff09;是一种常用的技术。OpenCV提供了多种平滑处理方法&#xff0c;包括均值滤波…

使用Python将视频转化为gif

使用Python将视频转化为gif 一、前言二、准备三、测试 一、前言 最近想把喜欢的视频片段作成gif&#xff0c;就试着用Python做了下&#xff0c;感觉效果还行&#xff0c;这里做个记录。 二、准备 先下载安装对应的库&#xff0c;命令如下&#xff1a; pip install moviepy …

HTTP长连接与短连接的前世今生

HTTP长连接与短连接的前世今生 大家好&#xff01;作为一名在互联网摸爬滚打多年的开发者&#xff0c;今天想跟大家聊聊HTTP中的长连接和短连接这个话题。 记得我刚入行时&#xff0c;对这些概念一头雾水&#xff0c;希望这篇文章能帮助新入行的朋友少走些弯路。 什么是HTTP…

批量将 PPT 文档中的图片提取到文件夹

在 PPT 文档中我们可以插入很多的图片来丰富我们的幻灯片页面&#xff0c;但是当我们需要将 PPT 幻灯片中的图片提取出来的时候&#xff0c;会非常的麻烦&#xff0c;因为我们需要打开 PPT 然后将图片保存起来。会非常的耗费我们的时间和精力。今天给大家介绍的就是一种批量将 …

yolo目标检测算法在DJI上的研究分析(大纲)

yolo目标检测算法在DJI上的研究分析 面向边缘计算的实时目标检测系统设计与部署 第一章 绪论 1.1 研究背景与意义 目标检测技术需求&#xff1a; DJI设备&#xff08;如无人机、摄像头&#xff09;在安防、巡检、农业等场景中的广泛应用现有YOLO算法在高分辨率图像或资源受限…

MyBatisPlus(SpringBoot版)学习第二讲:基本CRUD

目录 1.BaseMapper 2. 基本CRUD 1. 插入一条记录 2. 删除 1>. 根据ID删除 2>. 根据实体&#xff08;ID&#xff09;删除 3>. 根据columnMap条件删除 4>. 根据entity条件删除 5>. 根据ID批量删除 3. 修改 1>. 根据ID修改 2>. 根据whereEntity条…

基于Spring Boot的企业内管信息化系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

Bitcoin Thunderbolt 内测通道开启,加速比特币交易新时代

比特币作为全球领先的加密货币&#xff0c;一直占据着去中心化金融的核心地位。然而&#xff0c;随着比特币生态的不断扩展&#xff0c;其交易速度和扩容问题逐渐成为制约发展的关键瓶颈。为解决这一难题&#xff0c; 比特币雷电网络&#xff08;Bitcoin Thunderbolt&#xff0…

QT笔记----QCheckBox

文章目录 概要1、QCheckBox 的基本概念2、单个QCheckBox3、多个QCheckBox同时应用3.1、实现效果3.2、实现Demo 概要 在 Qt 应用程序开发中&#xff0c;QCheckBox 是一个常用的用户界面元素&#xff0c;它允许用户在两种状态&#xff08;选中和未选中&#xff09;之间进行切换&a…

GR00T N1——英伟达开源的通用人形VLA:类似Helix的快与慢双系统,且可类似ViLLA利用海量的无标注视频做训练

前言 就在昨天3.19日的凌晨&#xff0c;英伟达发布的GR00T N1还是很有含金量的(上午已有好几个朋友私我了)&#xff0c;由此可以看到很多相关工作的影子&#xff0c;比如helix π0 LAPA&#xff0c;具体而言&#xff0c;其具有双系统架构 VLM模块(系统2)通过视觉和语言指令解…

数据建模流程: 概念模型>>逻辑模型>>物理模型

数据建模流程 概念模型 概念模型是一种高层次的数据模型&#xff0c;用于描述系统中的关键业务概念及其之间的关系。它主要关注业务需求和数据需求&#xff0c;而不涉及具体的技术实现细节。概念模型通常用于在项目初期帮助业务人员和技术人员达成共识&#xff0c;确保对业务需…

光谱仪与光谱相机的核心区别与协同应用

一、核心功能与数据维度 ‌光谱仪‌ ‌功能定位‌&#xff1a;专注单点或线状区域的光谱分析&#xff0c;通过色散元件&#xff08;光栅/棱镜&#xff09;分离波长&#xff0c;生成一维或二维光谱曲线&#xff0c;用于量化光强、吸收率等参数‌。 ‌数据维度‌&#xff1a;输…

运行时智控:PanLang 开发者指南(一)运行时系统核心模块实现——PanLang 原型全栈设计方案与实验性探索5

运行时智控&#xff1a;PanLang 开发者指南&#xff08;一&#xff09;运行时系统核心模块实现——PanLang 原型全栈设计方案与实验性探索5 文章目录 运行时智控&#xff1a;PanLang 开发者指南&#xff08;一&#xff09;运行时系统核心模块实现——PanLang 原型全栈设计方案与…

操作系统导论——第13章 抽象:地址空间

一、早期系统 从内存来看&#xff0c;早期的机器并没有提供多少抽象给用户。基本上&#xff0c;机器的物理内存如图13.1所示 操作系统曾经是一组函数&#xff08;实际上是一个库&#xff09;&#xff0c;在内存中&#xff08;在本例中&#xff0c;从物理地址0开始&#xff09;&…

C# 调用 VITS,推理模型 将文字转wav音频net8.0 跨平台

一、系统环境 操作系统&#xff1a;win10&#xff0c;win11 运行环境&#xff1a;dotnet8 工具:命令行&#xff0c;powershell 开源库:sherpa-onnx 二、工具和源码下载 开源库:https://k2-fsa.github.io/sherpa/onnx/index.html 运行环境下载 https://dotnet.microsoft.c…

C#基于MVC模式实现TCP三次握手,附带简易日志管理模块

C#基于MVC模式实现TCP三次握手 1 Model1.1 ServerModel1.2 ClientModel1.3 配置参数模块1.4 日志管理模块1.4.1 数据结构1.4.1 日志管理工具类1.4.1 日志视图展示1.4.1.1 UcLogManage.cs1.4.1.2 UcLogManage.Designer.cs 2 视图&#xff08;View&#xff09;2.1 ViewServer2.1.…

分布式算法:Paxos Raft 两种共识算法

1. Paxos算法 Paxos算法是 Leslie Lamport&#xff08;莱斯利兰伯特&#xff09;在 1990 年提出的一种分布式系统共识算法。也是第一个被证明完备的共识算法&#xff08;前提是不存在恶意节点&#xff09;。 1.1 简介 Paxos算法是第一个被证明完备的分布式系统共识算法。共识…

什么是数据库监控

数据库监控是一个综合的过程&#xff0c;涉及观察、分析和优化组织内数据库的性能、运行状况和可用性。通过持续跟踪查询执行时间、CPU使用率、内存消耗和存储I/O等指标&#xff0c;数据库监控使管理员能够主动识别和解决潜在问题。这种对数据库操作的实时可见性对于确保应用程…