Elasticsearch学习系列二(基础操作)
本文将分为3块讲解Es的基础操作。分别为:索引(index)、映射(mapping)、文档(document)。
索引操作
- 创建索引库
语法:
PUT /索引名称{
"settings":{
"属性名":"属性值"
}
}
settings:就是索引库的设置,可以定义如分片数、副本数等等。不设置的话就是都走默认值。
示例:
PUT /test-demo
- 判断索引是否存在
HEAD /索引名称
- 查看索引
- 查看单个索引
GET /索引名称
- 批量查看索引
GET /索引名称1,索引名称2
- 查看所有索引
GET _all
- 打开索引
POST /索引名称/_open
- 关闭索引
POST /索引名称/_close
- 删除索引
DELETE /索引名称
映射操作
索引创建之后,等于有了关系型数据库中的database。Es7.x取消了索引type类型的设置,不能指定类型,默认为_doc,但是字段仍然是有的,我们需要设置字段的约束信息,叫做字段映射(mapping)。
字段的约束包括:
- 字段的数据类型
- 是否要存储
- 是否要索引
- 分词器等
- 创建映射字段
语法:
PUT /索引名/_mapping
{
"properties":{
"字段名":{
"type":"类型",
"index":true,
"store":true,
"analyzer":"分词器"
}
}
}
- 字段名:根据需要任意填写
- type:类型,可以是text(可分词)、keyword(不可分词)、long、short、date、integer、object
- index:是否索引,默认为true
- store:是否独立存储,默认为false。原始的文本会存储在 _source 里面,如果设置为true,则是独立的存储某个字段,获取独立存储字段比从_source里解析快,但是更占空间。
- analyzer:指定分词器,一般中文可以选择ik_max_word、ik_smart
示例:
PUT /test-demo1/_mapping
{
"properties":{
"name":{
"type":"text",
"index":true,
"store":true,
"analyzer":"ik_max_word"
},
"job":{
"type":"text",
"analyzer":"ik_max_word"
},
"logo":{
"type":"keyword",
"index":false
}
,
"amt":{
"type":"double"
}
}
}
- 查看映射关系
- 查看某个索引
GET /索引名称/_mapping
- 查看所有索引
GET _mapping
#或者
GET _all/_mapping
- 修改映射关系
这里的修改指的是新增字段,其他更改不支持。只能删除索引,重建映射
PUT /索引库名/_mapping
{
"properties": {
"字段名": {
"type": "类型",
"index": true,
"store": true,
"analyzer": "分词器"
}
}
}
- 一次性创建索引和映射
语法:
put /索引库名称
{
"settings":{
"索引库属性名":"索引库属性值"
},
"mappings":{
"properties":{
"字段名":{
"映射属性名":"映射属性值"
}
}
}
}
示例:
PUT /test-demo2
{
"settings":{},
"mappings": {
"properties": {
"name":{
"type":"text",
"analyzer": "ik_max_word"
}
}
}
}
文档操作
文档,即索引库中的数据,会根据规则创建索引,将来用于搜索。可以类比做数据库中的一行数据。
- 新增文档
语法:
#自动生成id
POST /索引名称/_doc
{
"field":"value"
}
#手动指定id
POST /索引名称/_doc/1
{
"field":"value"
}
示例:
POST /test-demo1/_doc/1
{
"name":"百度",
"job":"运营",
"amt":"3000.34",
"logo":"http://www.lgstatic.com/ttasdf2",
"createTime":"20220303230000"
}
- 查看单个文档
GET /索引名称/_doc/{id}
结果如下:
{
"_index" : "test-demo1",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 2,
"found" : true,
"_source" : {
"name" : "百度",
"job" : "运营",
"amt" : "3000.34",
"logo" : "http://www.lgstatic.com/ttasdf2",
"createTime" : "20220303230000"
}
}
| 元数据项 | 含义 |
|---|---|
| _index | document所属index |
| _type | document所属type,Elasticsearch7.x默认type为_doc |
| _id | 代表document的唯一标识,与index和type一起,可以唯一标识和定位一个document |
| _version | document的版本号,Elasticsearch利用_version(版本号)的方式来确保应用中相互冲突的变更不会导致数据丢失。需要修改数据时,需要指定想要修改文档的version号,如果该版本不是当前版本号,请求将会失败 |
| _seq_no | 严格递增的顺序号,每个文档一个,Shard级别严格递增,保证后写入的Doc seq_no大于先写入的Doc的seq_no。任何类型的写操作,包括index、create、update和Delete,都会生成一个_seq_no。 |
| _primary_term | 当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1。_primary_term主要是用来恢复数据时处理当多个文档的_seq_no一样时的冲突,避免Primary Shard上的写入被覆盖 |
| found | true/false,是否查找到文档 |
| _source | 存储原始文档 |
- 查看所有文档
POST /test-demo1/_search
{
"query":{
"match_all": {}
}
}
- 仅查询部分字段
GET /test-demo1/_doc/1?_source=name,job
- 更新文档(全部更新)
PUT /test-demo1/_doc/1
{
"name":"百度3",
"job":"运营",
"amt":"3000.34",
"logo":"http://www.lgstatic.com/ttasdf2",
"createTime":"20220303230000"
}
为什么说是全部更新呢?如果你只传了name,其他filed不传。那么文档里就只剩name了。
注意:Elasticsearch执行更新操作的时候,Elasticsearch首先将旧的文档标记为删除状态,然后添加新的文档,旧的文档不会立即消失,但是你也无法访问,Elasticsearch会在你继续添加更多数据的时候在后台清理已经标记为删除状态的文档。
全部更新,是直接把之前的老数据,标记为删除状态,然后,再添加一条更新的(使用PUT或者POST)
- 更新文档(部分更新)
POST /索引名称/_update/{id}
{
"doc":{
"field":"value"
}
}
- 删除文档
- 根据id删除
DELETE /索引名称/_doc/{id}
- 根据查询条件删除
POST /索引名称/_delete_by_query
{
"query":{
"match":{
"字段名":"搜索关键字"
}
}
}
- 删除所有文档
POST /索引名称/_delete_by_query
{
"query":{
"match_all":{}
}
}
- 文档强制创建
本来如果不存在会创建,存在会更新。强制创建就是仅创建,不更新。已存在就报错。
PUT /索引名称/_doc/{id}?op_type=create
{
"filed":"value"
}
Elasticsearch学习系列二(基础操作)的更多相关文章
- MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化
上篇文章中 我们已经创建了EF4.1基于code first的例子 有了数据库 并初始化了一些数据 今天这里写基础的增删改查和持久对象的生命周期变化 学习下原文先把运行好的原图贴来上~~ 一.创建 ...
- DocX开源WORD操作组件的学习系列二
DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...
- windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)
windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...
- Emacs学习心得之 基础操作
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础操作 1.前言与学习计划2.Emacs基础操作 一. 前言与学习计 ...
- 图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)
项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限, ...
- MyBatis学习系列二——增删改查
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...
- Linux学习系列八:操作网口
一些相对高性能的单片机会带以太网接口,网口在MCU里算是比较复杂的外设了,因为它涉及到网络协议栈,通常情况下网络协议栈会运行在一个RTOS中,所以对普通单片机开发者来说网口使用起来相对难度较大一些.在 ...
- .net reactor 学习系列(二)---.net reactor界面各功能说明
原文:.net reactor 学习系列(二)---.net reactor界面各功能说明 安装了.net reactor之后,可以在安装目录下找到帮助文档REACTOR_HELP.c ...
- Maven学习系列二(1-5)
Maven学习系列二(1-5) 本文转自 QuantSeven 博客,讲解精炼易懂,适合入门,链接及截图如下 http://www.cnblogs.com/quanyongan/category/47 ...
随机推荐
- Java中最早期的集合Vector
1.Vector类可以实现可增长的对象数组.与数组一样,它包含可以使用整数索引进行访问的组件.但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作. 2 ...
- 更改docker默认的data,metadata存储大小(实操)
为什么要更改 data,metadata呢?我们运行环境中涉及大量数据操作,数据增长有时候很快,由于之前规划不足,所以磁盘很快达到瓶颈需要进行重新部署.这就需要调整原来的一些docker配置.操作系统 ...
- Quartz 使用记录
Quartz 使用记录 官网 https://www.quartz-scheduler.org/ 参考文档 Quartz 2.3.0 什么是 Quartz? 官方描述: Quartz is a ric ...
- 2021.08.16 P1300 城市街道交通费系统(dfs)
2021.08.16 P1300 城市街道交通费系统(dfs) P1300 城市街道交通费系统 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 城市街道交费系统最近创立了.一 ...
- 【Hadoop】HBase组件配置
目录 HBase实验步骤: 1.配置时间同步(所有节点) 2.部署HBase(master节点) 3.配置HBase(master节点) 4.拷贝文件到slave节点 5.修改权限,切换用户(所有节点 ...
- K8S+Jenkins自动化构建微服务项目(后续)
因为之前写过基于K8S部署jenkins master/slave平台,在这个的基础上构建微服务到K8S集群中 Jenkins-slave构建微服务项目到K8S集群 1.微服务项目上传到git仓库 这 ...
- 如何使用phpstudy搭建sqli-lab靶场
一.环境准备 下载并安装phpstudy,链接如下: phpstudy下载 选择自己想要的版本,安装目录自己选,其他的一路默认即可 二.下载源码 源码链接:sqli-labs源码下载 选择Downlo ...
- 2022 Java生态系统报告:Java 11超Java 8、Oracle在缩水、Amazon在崛起!
近日,New Relic发布了最新的2022 Java生态系统报告,这份报告可以帮助我们深入的了解Java体系的最新使用情况,下面就一起来看看2022年,Java发展的怎么样了,还是Java 8 YY ...
- 服务器安全加固 - Linux
一.账号和口令 1.1 禁用或删除无用账号 查看 /etc/passwd 文件查看是否有无用的账号,如果存在则删除,降低安全风险. 操作步骤: 使用命令 userdel <用户名> 删除不 ...
- 安装与基本配置DHCP服务器
一,安装DHCP服务器角色 1,打开[开始]→[管理工具]→[服务器管理器]→"仪表板"选项的[添加角色和功能],持续单机[下一步]按钮, 直至出现下图所示的"选择服务器 ...