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

打印 上一主题 下一主题

主题 857|帖子 857|积分 2571

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

为了可以快速的找到想要查询的索引,但是记不得索引的全称,这个时间就可以通过以下下令来查询当前连接的 es 的所有索引
  1. GET /_cat/indices?v
复制代码
查询结果如图,这时我们就可以看到我们当前 es 下的所有的索引名称,在 index 列,此中 crm_* 开头的就是业务相干的 es 索引表的名称

创建索引

查询索引之前,首先就是需要创建一个索引,这里我们创建一个索引名称为 test 的索引。简单的创建索引语句如下,当然你也可以在创建索引时指定分片等
  1. PUT /test
  2. {
  3.   "mappings": {
  4.     "test":{
  5.       "properties": {
  6.         "content":{
  7.           "type": "text",
  8.           "analyzer": "hanlp"
  9.         }
  10.       }
  11.     }
  12.   }
  13. }
复制代码
以是创建成功之后你可以看到右侧的创建成功的信息

查询索引结构

当索引创建成功之后,那么你大概想要看一看索引中的字段信息。大概是当你需要用到某个索引,但是由于时间久忘记具体索引字段时可以使用如下语句查询索引结构,索引字段
  1. GET /test/_mapping
复制代码
这里我们看到的索引结构以及字段名称如图所示

插入数据

索引创建成功之后,就可以对指定的索引进行操作。首先就可以插入数据,通常插入数据的下令,可以通过put 下令为指定索引插入数据,比如
  1. PUT test/test/1
  2. {
  3.   "content":"初级会计资格证"
  4. }
复制代码
执行索引插入数据操作成功之后可以看到右侧返回的索引创建成功信息,此中 result 返回 created 表现索引数据创建成功,如果是更新索引的话,这里 result 会返回 updated ,后面会讲到

查询索引数据

那么数据插入成功之后,我们就想确认一下我们的数据有没有插入成功,就可以通过以下下令查询索引数据,暂时没有指定具体的查询条件
  1. GET test/_search
复制代码
返回的结果如下,这时可以看到我们插入的数据已经成功展示了

查看索引磁盘占用信息

当使用了一段时间的 es 数据索引之后,我们大概会担心 es 索引磁盘的占用环境,同时也可以通过监控 es 磁盘的剩余空间来保证 es 数据可以没有题目的插入。这个时间就可以通过下令查询指定索引的磁盘占用信息
  1. GET /_cat/indices/test?v
复制代码
通过下令我们可以看到我们当前索引已经占用的磁盘空间信息

删除索引

当你在创建索引时遇到索引创建错误的环境,大概是之前讲过的你需要更改索引字段属性的时间,你大概需要通过创建暂时索引的方式,然后迁徙数据到新的索引中去,再删除旧的索引,那么这时间就会用到删除索引。对于删除索引操作,各人需要注意,删除的索引数据不能规复,谨慎操作
  1. DELETE test
复制代码
查看分词器分词结果

别的另有就是为了进步 es 对于文本类型字段的搜索效率,这个时间就大概会对文本型字段添加分词器。当时当你考虑分词器的时间,你大概并不知道选择哪种分词器分词的结果更好。因此对于新的分词器,不了解其分词后的具体结果,可以通过下令执行分词器查看其分词结果
  1. POST /_analyze
  2. {
  3.   "analyzer": "hanlp",
  4.   "text": "查看哦,同时我们也会给您分配专属的学习规划师带"
  5. }
复制代码
比如说当前选择的hanlp 分词器的分词结果如图

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

在使用 es 查询数据时,es 默认每次查询指定条件下的 10 条数据,这个时间如果你想要查询更多数据的话,你就需要指定每页查询的数据量,通过 size 属性来设置,正如下令行
  1. GET crm_meiqia_conversation/_search
  2. {
  3.   "size":200
  4. }
复制代码
指定条件查询

同样的,es 的查询也支持多种复杂条件的数据查询,比如如下的查询下令,执行条件查询分为多种条件,下面来指定一个根本的查询
  1. GET crm_meiqia_conversation/_search
  2. {
  3.   "query": {
  4.     "bool" : {
  5.       "must" : [
  6.         {
  7.           "bool" : {
  8.             "filter" : [
  9.               {
  10.                 "range" : {
  11.                   "convStartDate" : {
  12.                     "from" : 1719849600000,
  13.                     "to" : null,
  14.                     "include_lower" : true,
  15.                     "include_upper" : true,
  16.                     "boost" : 1.0
  17.                   }
  18.                 }
  19.               },
  20.               {
  21.                 "range" : {
  22.                   "convEndDate" : {
  23.                     "from" : null,
  24.                     "to" : 1719935999000,
  25.                     "include_lower" : true,
  26.                     "include_upper" : true,
  27.                     "boost" : 1.0
  28.                   }
  29.                 }
  30.               },
  31.               {
  32.                 "term" : {
  33.                   "clientInfo.uid" : {
  34.                     "value" : "34546407",
  35.                     "boost" : 1.0
  36.                   }
  37.                 }
  38.               },
  39.               {
  40.                 "term" : {
  41.                   "agentId" : {
  42.                     "value" : "10002351",
  43.                     "boost" : 1.0
  44.                   }
  45.                 }
  46.               },
  47.               {
  48.                 "match_phrase_prefix" : {
  49.                   "convContent.content" : {
  50.                     "query" : "请您稍等",
  51.                     "slop" : 0,
  52.                     "max_expansions" : 50,
  53.                     "boost" : 1.0
  54.                   }
  55.                 }
  56.               }
  57.             ],
  58.             "adjust_pure_negative" : true,
  59.             "boost" : 1.0
  60.           }
  61.         }
  62.       ],
  63.     "adjust_pure_negative" : true,
  64.     "boost" : 1.0
  65.   }
  66.   }
  67. }
复制代码
查询后的返回结果如图所示,此时查询到的数据就是符合条件的数据

数据迁徙

当需要更改索引结构时,需要先把原有索引的数据迁徙到相同暂时索引中,待更改索引结构之后再迁徙回来,此时就是数据迁徙,迁徙数据用到
  1. POST _reindex
  2. {  
  3.   "source": {  
  4.     "index": "crm_meiqia_conversation",
  5.     "size":500
  6.   },  
  7.   "dest": {  
  8.     "index": "crm_meiqia_conversation_tmp"  
  9.   }
  10. }
复制代码
大概也可以选择异步迁徙数据的方式,比如如下下令
  1. POST _reindex?wait_for_completion=false
  2. {  
  3.   "source": {  
  4.     "index": "crm_meiqia_conversation",
  5.     "size":500
  6.   },  
  7.   "dest": {  
  8.     "index": "crm_meiqia_conversation_tmp"  
  9.   }
  10. }
复制代码
异步迁徙数据,数据迁徙结果通过下令查看
  1. GET /_tasks/cbwVMU6UTACFPxKW0zkOcw:456723575
复制代码
统计索引数据量

当然,也有的场景需要统计索引的全部数据,那么想要统计索引的全部数据量,可以通过如下下令
  1. GET crm_meiqia_conversation/_count
复制代码
比如这里统计 索引 crm_meiqia_conversation 的 数据量,统计结果如图所示

更新数据

另有一种环境就是,在新增索引数据之后往往会伴随着更新数据,那么更新指定索引指定对象字段中数据内容,比如如下下令
  1. POST test/test/1/_update
  2. {
  3.   "doc":{
  4.     "content":"ceshi测试"
  5.   }
  6. }
复制代码
执行上述 下令之后可以看到 右侧返回结果 result 为 updated 表现数据更新成功

数据更新成功后通过查询下令查看数据可以看到

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表