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.mzph.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神经网络算法 我的任务是预测三个变量的值…