【Elasticsearch<三>✈️✈️】常见基本属性的用法以及与MySQL的区别

目录

🍸前言

🍻一、索引

[1.1 映射关系 (mappings)](#1.1 映射关系 (mappings))

[1.2 映射关系查看](#1.2 映射关系查看)

🍺二、文档

[2.1 删除文档](#2.1 删除文档)

[2.2 更新文档](#2.2 更新文档)

[2.3 批量操作](#2.3 批量操作)

[🍹三、高级查询(Query 检索)](#🍹三、高级查询(Query 检索))

🍷四、章末


🍸前言

继本地完成 Elasticsearch , 浏览器插件, kibana 管理工具,IK 分词器 安装之后,初步了解了 ES 的基本数据 以及 IK 分词器的操作原理,下面再来学习下其他的基本属性,文章链接如下:

【Elasticsearch<一>✈️✈️】简单安装使用以及各种踩坑-CSDN博客

【Elasticsearch<二>✈️✈️】基本属性概念与MySQL数据库的不同之处-CSDN博客

🍻一、索引

1.1 映射关系 (mappings)

示例:创建一个索引并指定索引的映射规则,意思是指创建一个索引 testmapping ,该索引有四个字段,分别是 "keyword" 类型的 "title" 字段,"double" 类型的 "price" 字段,"date" 类型的 "create_time" 字段,...,后续再插入数据的时候,如果数据格式不符合向指定的类型则报错,报错如下:

还有更多映射字段类型,可以参考官网

Field data types | Elasticsearch Guide [7.15] | Elastic

复制代码
PUT /testmapping
{
  "mappings": {
    "properties": {
      "title":{
        "type": "keyword"
      },
      "price":{
        "type": "double"
      },
      "create_time":{
        "type": "date"
      },
      "description":{
        "type": "text"
      }
    }
  }
}
1.2 映射关系查看

使用 GET 命令,GET /索引名称/_mapping

复制代码
GET /testmapping/_mapping

🍺二、文档

上篇文章使用了文档的基础操作,比如指定文档 id 生成用 put , 自动生成文档 id 使用 post

2.1 删除文档

使用 delete 方法,比如 : delete /索引名称/_doc/id

复制代码
DELETE /testmapping/_doc/1
2.2 更新文档

更新文档有两种方式,一种是 删除原先的再插入,另一种是在原有基础上修改

2.2.1 先删后改

比如先创建一个文档,再指定相同 id 进行覆盖,结果如下

复制代码
PUT /testmapping/_doc/1
{
  "title":"海鲜类商品",
  "price":888,
  "create_time":"2024-04-28T13:19:00Z",
  "description":"商品描述:这是海鲜类商品"
}


PUT /testmapping/_doc/1
{
  "price":999
}

2.2.2 原有基础上修改

执行操作先插入一个文档,再指定文档 id 进行修改

复制代码
PUT /testmapping/_doc/1
{
  "title":"海鲜类商品",
  "price":888,
  "create_time":"2024-04-28T13:19:00Z",
  "description":"商品描述:这是海鲜类商品"
}


POST /testmapping/_doc/1/_update
{
  "doc":{
    "price":666
  }
}
2.3 批量操作

注:批量插入时,每条插入语句的成功与否不会影响到别的的数据插入以及结果展示,不会像数据库原子性操作那样,有错误全部回滚

复制代码
POST /testmapping/_doc/_bulk 
{"index":{"_id":"2"}}
  {"title":"零食类商品","price":222,"create_time":"2024-04-28T13:19:00Z","description":"商品描述:这是零食类商品"}
{"index":{"_id":"3"}}
  {"title":"运动类商品","price":222,"create_time":"2024-04-28T13:19:00Z","description":"商品描述:这是运动类商品"}

🍹三、高级查询(Query 检索)

3.1. 查询全部文档 【match_all】

结果如下:

复制代码
GET /testmapping/_search
{
  "query":{
    "match_all": {}
  }
}

3.2 关键字查询 【term】

复制代码
GET /testmapping/_search
{
  "query":{
    "term":{
      "title":{
        "value": "服饰类"
      }
    }
  }
}

3.3 范围查询【range】

用于指定查询范围内的文档,比如查询 商品价格位于 666-888之间的商品

复制代码
GET /testmapping/_search
{
  "query":{
    "range":{
      "price":{
        "gte": 600,
        "lte":888
      }
    }
  }
}

3.4 前缀查询【prefix】

用来检索含有指定关键词的文档,比如查询前缀为"零食类"的相关文档

复制代码
GET /testmapping/_search
{
  "query":{
    "prefix":{
      "title":{
        "value":"零食类"
      }
    }
  }
}

3.5 多 文档 id 查询 【ids】

用来查询一组 id 对应的文档,比如获取文档 id 为 1和2 的文档

复制代码
GET /testmapping/_search
{
  "query":{
    "ids":{
      "values": [1,2]
    }
  }
}

3.6 布尔查询【bool】

布尔查询相当于组合多个条件实现复杂查询

must : 多个条件要同时成立,相当于 &&

should : 相当于 || 有一个成立就行

must_not : 相当于 ! 都不能满足

比如 should 查询 title 字段为 "零食类商品" 或者 "运动类商品"

复制代码
GET /testmapping/_search
{
  "query":{
    "bool":{
      "should": [
        {"terms": {
          "title": [
            "零食类商品",
            "运动类商品"
          ]
        }}
      ]
    }
  }
}

3.7 高亮查询 【highlight】

3.7.1 使用 highlight 关键字,通过对结果添加高亮标签实现,比如查询出 title 为"运动类商品"的文档并给 title 标注为高亮

复制代码
GET /testmapping/_search
{
   "query": {
    "match": {
      "title": "运动类商品"
    }
  },
  "highlight": {
    "fields": {
      "*":{}
    }
  }
}

3.7.2 自定义高亮标签

pre_tags : 前置标签

post_tags : 后置标签

复制代码
GET /testmapping/_search
{
   "query": {
    "match": {
      "title": "运动类商品"
    }
  },
  "highlight": {
    "pre_tags": ["<span style='color:red'>"],
    "post_tags": ["</span>"],
    "fields": {
      "*":{}
    }
  }
}

3.8 返回指定的条数

类似于 SQL 中的 limit 关键字,比如所有查询结果中,只取一条

复制代码
GET /testmapping/_search
{
  "query" : {
    "match_all":{}
  },
  "size":1
}

3.9 分页查询【from】

from 关键字指定当前从第几页开始,比如 size 为1, from 1 就是指总共数据的第二条

3.10 排序【sort】

类似于 MySQL 中的 order by,指定根据某个字段排序,正向排序: asc , 倒向排序 : desc

比如说:按照 price 价格 倒排,也就是说价格从高到低排列

复制代码
GET /testmapping/_search
{
  "query" : {
    "match_all":{}
  },
  "sort":[
    {
      "price":{
        "order":"desc"
      }
    }]
}

3.11 指定查询字段 【source】

类似于 MySQL 指定返回的字段,比如:基于上面的排序数据,只返回 "price" 和 "title" 这两个字段的值

复制代码
GET /testmapping/_search
{
  "query" : {
    "match_all":{}
  },
  "sort":[
    {
      "price":{
        "order":"desc"
      }
    }],
    "_source":["price","title"]
}

🍷四、章末

文章到这里就结束了~

相关推荐
武子康11 小时前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive
大大大大晴天12 小时前
Flink生产问题排障-Kryo serializer scala extensions are not available
大数据·flink
Elasticsearch1 天前
如何使用 Agent Builder 排查 Kubernetes Pod 重启和 OOMKilled 事件
elasticsearch
Elasticsearch2 天前
通用表达式语言 ( CEL ): CEL 输入如何改进 Elastic Agent 集成中的数据收集
elasticsearch
武子康3 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康4 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库4 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟4 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法