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

devtools/2025/1/11 12:00:01/

日常工作之 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 日常用到的相关语句差不多整理完了,有需要的可以查阅哈。


http://www.ppmy.cn/devtools/149608.html

相关文章

机器学习顶会NeurIPS: AGILE: A Novel Reinforcement Learning Framework of LLM Agents

🌟 研究背景 🌟 随着大型语言模型(LLMs)在指令遵循、推理和零样本学习等方面展现出卓越的能力,基于LLMs的自主代理(LLM Agents)的研究逐渐兴起。然而,如何将规划、反思、工具使用等…

Android中的Service

一、Service的简介 Service是Android系统四大组件之一&#xff0c;定义是服务&#xff0c;一种长时间在后台长时间运行的操作或处理异步任务的组件。Service可以不依赖于用户界面的情况下运行&#xff0c;并且可以在应用被关闭后继续运行。 二、<service> 标签详解 在…

smplx blender插件笔记

目录 liunx安装&#xff1a; liunx安装&#xff1a; pip install smplx 这个创建模型报错 SMPL_blender_addon

Java进阶-在Ubuntu上部署SpringBoot应用

随着云计算和容器化技术的普及&#xff0c;Linux 服务器已成为部署 Web 应用程序的主流平台之一。Java 作为一种跨平台的编程语言&#xff0c;具有广泛的应用场景。本文将详细介绍如何在 Ubuntu 服务器上部署 Java 应用&#xff0c;包括环境准备、应用发布、配置反向代理&#…

欧拉公式和傅里叶变换

注&#xff1a;英文引文机翻&#xff0c;未校。 中文引文未整理去重&#xff0c;如有异常&#xff0c;请看原文。 Euler’s Formula and Fourier Transform Posted byczxttkl October 7, 2018 Euler’s formula states that e i x cos ⁡ x i sin ⁡ x e^{ix} \cos{x} i …

Git:merge合并、冲突解决、强行回退的终极解决方案

首先还是得避免冲突的发生&#xff0c;无法避免时再去解决冲突&#xff0c;避免冲突方法&#xff1a; 时常做pull、fatch操作&#xff0c;不要让自己本地仓库落后太多版本&#xff1b;在分支操作&#xff0c;如切换分支、合并分支、拉取分支前&#xff0c;及时清理Change&#…

盲盒摆摊交友系统架构与功能分析

一、系统架构** 服务端 服务端&#xff1a;Java&#xff08;最低JDK1.8&#xff0c;支持JDK11以及JDK17&#xff09;数据库&#xff1a;MySQL数据库&#xff08;标配5.7版本&#xff0c;支持MySQL8&#xff09;ORM框架&#xff1a;Mybatis&#xff08;集成通用tk-mapper&…

Unity学习笔记(六)使用状态机重构角色移动、跳跃、冲刺

前言 本文为Udemy课程The Ultimate Guide to Creating an RPG Game in Unity学习笔记 整体状态框架(简化) Player 是操作对象的类&#xff1a; 继承了 MonoBehaviour 用于定义游戏对象的行为&#xff0c;每个挂载在 Unity 游戏对象上的脚本都需要继承自 MonoBehaviour&#x…