当前位置: 首页 > news >正文

日常工作之 Elasticsearch 常用查询语句汇总

日常工作之 Elasticsearch 常用查询语句汇总

  • 查询现有索引
  • 创建索引
  • 查询索引结构
  • 插入数据
  • 查询索引数据
  • 查看索引磁盘占用信息
  • 删除索引
  • 查看分词器分词结果
  • 指定查询数量
  • 指定条件查询
  • 数据迁移
  • 统计索引数据量
  • 更新数据

在使用 es 的过程中,总是会用到 es 的查询语句,考虑到一些 es 使用过程中语句没那么频繁,就会导致总是用起来的时候会忘记。那么为了方便用的时候可以快速查询到想用的内容,这里主要对 es 日常用到的查询语句 做一个总结展示,记录查询语句方便后续用到时查询。

查询现有索引

为了可以快速的找到想要查询的索引,但是记不得索引的全称,这个时候就可以通过以下命令来查询当前连接的 es 的所有索引

GET /_cat/indices?v

查询结果如图,这时我们就可以看到我们当前 es 下的所有的索引名称,在 index 列,其中 crm_* 开头的就是业务相关的 es 索引表的名称
在这里插入图片描述

创建索引

查询索引之前,首先就是需要创建一个索引,这里我们创建一个索引名称为 test 的索引。简单的创建索引语句如下,当然你也可以在创建索引时指定分片等

PUT /test
{"mappings": {"test":{"properties": {"content":{"type": "text", "analyzer": "hanlp"}}}}
}

所以创建成功之后你可以看到右侧的创建成功的信息
在这里插入图片描述

查询索引结构

当索引创建成功之后,那么你可能想要看一看索引中的字段信息。或者是当你需要用到某个索引,但是由于时间久忘记具体索引字段时可以使用如下语句查询索引结构,索引字段

GET /test/_mapping

这里我们看到的索引结构以及字段名称如图所示
在这里插入图片描述

插入数据

索引创建成功之后,就可以对指定的索引进行操作。首先就可以插入数据,通常插入数据的命令,可以通过put 命令为指定索引插入数据,比如

PUT test/test/1
{"content":"初级会计资格证"
}

执行索引插入数据操作成功之后可以看到右侧返回的索引创建成功信息,其中 result 返回 created 表示索引数据创建成功,如果是更新索引的话,这里 result 会返回 updated ,后面会讲到
在这里插入图片描述

查询索引数据

那么数据插入成功之后,我们就想确认一下我们的数据有没有插入成功,就可以通过以下命令查询索引数据,暂时没有指定具体的查询条件

GET test/_search

返回的结果如下,这时可以看到我们插入的数据已经成功展示了
在这里插入图片描述

查看索引磁盘占用信息

当使用了一段时间的 es 数据索引之后,我们可能会担心 es 索引磁盘的占用情况,同时也可以通过监控 es 磁盘的剩余空间来保证 es 数据可以没有问题的插入。这个时候就可以通过命令查询指定索引的磁盘占用信息

GET /_cat/indices/test?v

通过命令我们可以看到我们当前索引已经占用的磁盘空间信息
在这里插入图片描述

删除索引

当你在创建索引时遇到索引创建错误的情况,或者是之前讲过的你需要更改索引字段属性的时候,你可能需要通过创建临时索引的方式,然后迁移数据到新的索引中去,再删除旧的索引,那么这时候就会用到删除索引。对于删除索引操作,大家需要注意,删除的索引数据不能恢复,谨慎操作

DELETE test

查看分词器分词结果

另外还有就是为了提高 es 对于文本类型字段的搜索效率,这个时候就可能会对文本型字段添加分词器。当时当你考虑分词器的时候,你可能并不知道选择哪种分词器分词的效果更好。因此对于新的分词器,不了解其分词后的具体效果,可以通过命令执行分词器查看其分词结果

POST /_analyze
{"analyzer": "hanlp", "text": "查看哦,同时我们也会给您分配专属的学习规划师带"
}

比如说当前选择的hanlp 分词器的分词效果如图
在这里插入图片描述

这里需要注意的是,hanlp 分词器不是 es 的默认分词器,因此需要你自己下载安装hanlp 的分词器插件,在安装 hanlp 分词器插件时需要选择 hanlp 的分词器版本与当前你的 es 数据库版本一致才可以。

指定查询数量

在使用 es 查询数据时,es 默认每次查询指定条件下的 10 条数据,这个时候如果你想要查询更多数据的话,你就需要指定每页查询的数据量,通过 size 属性来设置,正如命令行

GET crm_meiqia_conversation/_search
{"size":200
}

指定条件查询

同样的,es 的查询也支持多种复杂条件的数据查询,比如如下的查询命令,执行条件查询分为多种条件,下面来指定一个基本的查询

GET crm_meiqia_conversation/_search
{"query": {"bool" : {"must" : [{"bool" : {"filter" : [{"range" : {"convStartDate" : {"from" : 1719849600000,"to" : null,"include_lower" : true,"include_upper" : true,"boost" : 1.0}}},{"range" : {"convEndDate" : {"from" : null,"to" : 1719935999000,"include_lower" : true,"include_upper" : true,"boost" : 1.0}}},{"term" : {"clientInfo.uid" : {"value" : "34546407","boost" : 1.0}}},{"term" : {"agentId" : {"value" : "10002351","boost" : 1.0}}},{"match_phrase_prefix" : {"convContent.content" : {"query" : "请您稍等","slop" : 0,"max_expansions" : 50,"boost" : 1.0}}}],"adjust_pure_negative" : true,"boost" : 1.0}}],"adjust_pure_negative" : true,"boost" : 1.0}}
}

查询后的返回结果如图所示,此时查询到的数据就是符合条件的数据
在这里插入图片描述

数据迁移

当需要更改索引结构时,需要先把原有索引的数据迁移到相同临时索引中,待更改索引结构之后再迁移回来,此时就是数据迁移,迁移数据用到

POST _reindex
{  "source": {  "index": "crm_meiqia_conversation","size":500},  "dest": {  "index": "crm_meiqia_conversation_tmp"  }
}

或者也可以选择异步迁移数据的方式,比如如下命令

POST _reindex?wait_for_completion=false
{  "source": {  "index": "crm_meiqia_conversation","size":500},  "dest": {  "index": "crm_meiqia_conversation_tmp"  }
}

异步迁移数据,数据迁移结果通过命令查看

GET /_tasks/cbwVMU6UTACFPxKW0zkOcw:456723575

统计索引数据量

当然,也有的场景需要统计索引的全部数据,那么想要统计索引的全部数据量,可以通过如下命令

GET crm_meiqia_conversation/_count

比如这里统计 索引 crm_meiqia_conversation 的 数据量,统计结果如图所示
在这里插入图片描述

更新数据

还有一种情况就是,在新增索引数据之后往往会伴随着更新数据,那么更新指定索引指定对象字段中数据内容,比如如下命令

POST test/test/1/_update
{"doc":{"content":"ceshi测试"}
}

执行上述 命令之后可以看到 右侧返回结果 result 为 updated 表示数据更新成功
在这里插入图片描述

数据更新成功后通过查询命令查看数据可以看到
在这里插入图片描述

到这里关于es 日常用到的相关语句差不多整理完了,有需要的可以查阅哈。

相关文章:

日常工作之 Elasticsearch 常用查询语句汇总

日常工作之 Elasticsearch 常用查询语句汇总 查询现有索引创建索引查询索引结构插入数据查询索引数据查看索引磁盘占用信息删除索引查看分词器分词结果指定查询数量指定条件查询数据迁移统计索引数据量更新数据 在使用 es 的过程中,总是会用到 es 的查询语句&#x…...

WeakAuras NES Script(lua)

WeakAuras NES Script 修星脚本字符串 脚本1:NES !WA:2!TMZFWXX1zDxVAs4siiRKiBN4eV(sTRKZ5Z6opYbhQQSoPtsxr(K8ENSJtS50(J3D7wV3UBF7E6hgmKOXdjKsgAvZFaPTtte0mD60XdCmmecDMKruyykDcplAZiGPfWtSsag6myGuOuq89EVDV9wPvKeGBM7U99EFVVVV33VFFB8Z2TJ8azYMlZj7Ur3QDR(…...

JVM 触发类加载的条件有哪些?

目录 一、类加载生命周期 二、主动引用 2.1、创建类的实例 2.2、访问类的静态字段或静态方法 2.3、反射 2.4、初始化类的子类时,先初始化父类 2.5、虚拟机启动时,初始化 main 方法所在的类 2.6、动态语言支持 三、被动引用 3.1、通过子类引用父…...

Android实战经验篇-增加系统分区

系列文章转如下链接: Android Display Graphics系列文章-汇总 Android实战经验篇-系列文章汇总 本文主要包括部分: 一、Android分区说明 1.1 系统分区查看 1.2 分区表修改 1.3 验证新分区 二、源码修改 2.1 generate_extra_images 2.2 fstab 2…...

深入学习 Python 量化编程

深入学习 Python 量化编程 第一章:Python 基础与量化编程环境搭建 1.1 安装必要的库 首先,你需要安装一些在量化编程中常用的 Python 库。可以通过以下命令安装这些库: pip install numpy pandas matplotlib yfinance backtrader scikit-…...

机器学习笔记——特征工程

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍机器学习中常见的特征工程方法、正则化方法和简要介绍强化学习。 文章目录 特征工程(Fzeature Engineering)1. 特征提取&#xff…...

4种革新性AI Agent工作流设计模式全解析

文章目录 导读:AI Agent的四种关键设计模式如下:1. 反思2. 工具使用3. 规划4. 多Agent协作 总结内容简介: 导读: AI Agent是指能够在特定环境中自主执行任务的人工智能系统,不仅接收任务,还自主制定和执行…...

【入门级】计算机网络学习

网络安全:前端开发者必知:Web安全威胁——XSS与CSRF攻击及其防范-CSDN博客 三次握手四次挥手:前端网络—三次握手四次挥手_前端三次握手-CSDN博客 http协议和https协议的区别:前端网络—http协议和https协议的区别-CSDN博客 网…...

安装 Jenkins 后无法访问用户名或密码且忘记这些凭证怎么办?

Jenkins 是一款功能强大的自动化服务器,在持续集成与交付(CI/CD)领域应用广泛。不过,用户在使用过程中,尤其是首次接触该系统或系统重启后,常常会遇到登录方面的问题。要是 Jenkins 突然要求输入用户名和密…...

day08_Kafka

文章目录 day08_Kafka课程笔记一、今日课程内容一、消息队列(了解)**为什么消息队列就像是“数据的快递员”?****实际意义**1、产生背景2、消息队列介绍2.1 常见的消息队列产品2.2 应用场景2.3 消息队列中两种消息模型 二、Kafka的基本介绍1、…...

安装conda 环境

conda create -n my_unet5 python3.8 (必须设置3.8版本) conda activate my_unet5...

【dockerros2】ROS2节点通信:docker容器之间/docker容器与宿主机之间

🌀 一个中大型ROS项目常需要各个人员分别完成特定的功能,而后再组合部署,而各人员完成的功能常常依赖于一定的环境,而我们很难确保这些环境之间不会相互冲突,特别是涉及深度学习环境时。这就给团队项目的部署落地带来了…...

使用外网访问在群晖中搭建思源docker

还是要折腾,之前发现用公网IP可以访问就没有折腾,今天ip变了,用不了了,一搜,发现有方法可以用域名访问,哎,太好了! 原文:分享我在 群晖 docker 部署 思源笔记 步骤 - 链…...

深度学习中的EMA技术:原理、实现与实验分析

深度学习中的EMA技术:原理、实现与实验分析 1. 引言 指数移动平均(Exponential Moving Average, EMA)是深度学习中一种重要的模型参数平滑技术。本文将通过理论分析和实验结果,深入探讨EMA的实现和效果。 深度学习中的EMA技术:原理、实现与…...

win32汇编环境,窗口程序中对按钮控件常用操作的示例

;运行效果 ;win32汇编环境,窗口程序中对按钮控件常用操作的示例 ;常用的操作,例如创建按钮控件,使其无效,改变文本,得到文本等。 ;将代码复制进radasm软件里,直接就可以编译运行。重点部分加备注。 ;>&g…...

CentOS 7.9 通过 yum 安装 Docker

文章目录 前言一、删除已安装的 Docker二、网络设置三、设置 yum 源,并安装依赖四、设置 Docker 仓库五、安装及使用 Docker六、镜像仓库总结 前言 CentOS 7.9 过了维护期,Docker 官方文档没有了相关的安装文档。记录一下,备用! …...

【开源免费】基于Vue和SpringBoot的英语知识应用网站(附论文)

本文项目编号 T 138 ,文末自助获取源码 \color{red}{T138,文末自助获取源码} T138,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

工具推荐:PDFgear——免费且强大的PDF编辑工具 v2.1.12

PDFgear——免费且强大的PDF编辑工具 v2.1.12 软件简介 PDFgear 是一款 完全免费的 PDF 软件,支持 阅读、编辑、转换、合并 以及 跨设备签署 PDF 文件,无需注册即可使用。它提供了丰富的 PDF 处理功能,极大提升了 PDF 文件管理的便捷性和效…...

Web渗透测试之XSS跨站脚本 防御[WAF]绕过手法

目录 XSS防御绕过汇总 参考这篇文章绕过 XSS payload XSS防御绕过汇总 服务端知道有网络攻击或者xss攻 Html...

MMDetection框架下的常见目标检测与分割模型综述与实践指南

目录 综述与实践指南 SSD (Single Shot MultiBox Detector) 基本配置和使用代码 RetinaNet 基本配置和使用代码 Faster R-CNN 基本配置和使用代码 Mask R-CNN 基本配置和使用代码 Cascade R-CNN 基本配置和使用代码 总结 综述与实践指南 MMDetection是一个基于Py…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四&#xff…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...

【实施指南】Android客户端HTTPS双向认证实施指南

🔐 一、所需准备材料 证书文件(6类核心文件) 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...