ElasticSearch全文搜索引擎之Restful API和索引操作篇
目录
一、Rest风格说明
二、索引基本操作
三、总结
一、Rest风格说明
Restful其实是一种软件架构风格 ,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
ElasticSearch也提供了一套完善的Restful风格API供我们使用,基本Rest命令说明如下表所示:
method | url地址 | 描述 |
---|---|---|
PUT | localhost:9200/索引名称/类型名称/文档id | 创建文档(指定文档id) |
POST | localhost:9200/索引名称/类型名称 | 创建文档(随机文档id) |
POST | localhost:9200/索引名称/类型名称/文档id/_update | 修改文档 |
DELETE | localhost:9200/索引名称/类型名称/文档id | 删除文档 |
GET | localhost:9200/索引名称/类型名称/文档id | 通过文档id查询文档 |
POST | localhost:9200/索引名称/类型名称/_search | 查询所有数据 |
二、索引基本操作
(1)、创建索引
【a】创建索引:同时指定属性的类型
PUT /user
{"mappings": {"properties": {"name": {"type": "text"},"age": {"type": "integer"},"hobby": {"type": "text"},"birthDay": {"type": "date","format": "yyyy-MM-dd HH:mm:ss"}}}
}
回到elasticsearch head插件中查看索引,如下图:
可以看到我们成功创建了一个索引名称为"user"的索引。
如上创建索引index(数据库):user,type(表):_doc,field(字段):name(姓名,文本类型)、age(年龄,数字类型)、hobby(兴趣,文本类型)、birthDay(生日,时间类型,格式是yyyy-MM-dd HH:mm:ss)
前面的示例中我们看到指定了字段的类型,通常常见的类型如下:
- 字符串类型
text、keyword - 数值类型
long,integer,short,btye,double,float,half float,scaled float - 日期类型
date - 布尔值类型
boolean - 二进制类型
binary
如果自己的文档字段没有指定,那么es就会给我们默认配置字段类型。
如果需要在创建索引的时候,执行分片的一些设置。
- number_of_shards:每个索引的主分片数,默认值是 5 。这个配置在索引创建后不能修改。
- number_of_replicas:每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置可以随时修改。
- 例如,我们可以创建只有一个主分片,没有副本的小索引:
PUT /member
{"settings": {"number_of_shards": 1,"number_of_replicas": 0}
}
查看索引信息:
更改副本数量:
PUT /member/_settings
{"number_of_replicas": 2
}
再次查看索引信息:
可以看到,副分片的数量已经成功修改为2。
【b】往索引中插入数据
在es中,往索引中插入数据就类似于我们在关系型数据库中往数据库中插入记录一样。下面我们插入三条数据到user索引中:
PUT /user/_doc/1
{"name": "姚明","age": 30,"interests": "打篮球","birthDay": "2010-01-01 15:00:00"
}PUT /user/_doc/2
{"name": "刘德华","age": 50,"interests": "唱歌","birthDay": "2000-01-01 20:00:00"
}PUT /user/_doc/3
{"name": "刘翔","age": 40,"interests": "跑步","birthDay": "1990-01-01 10:00:00"
}
可以看到成功插入三条记录。
【c】修改数据
es修改数据有两种方法:
- 第一种方法:提交还是使用PUT进行覆盖
下面我们将user索引里面的文档ID为1的记录的name进行修改:
PUT /user/_doc/1
{"name": "姚明2","age": 30,"interests": "打篮球","birthDay": "2010-01-01 15:00:00"
}
修改完成之后,查看索引中的数据:
可以看到,数据成功被修改,以上就是使用覆盖的方式修改数据。
- 第二种方法:发送POST请求
修改语法要求:
POST /索引名称/类型名称/文档id/_update
{//请求体
}
POST /user/_doc/1/_update
{"doc": {"name": "姚明 - 姚明"}
}
修改完成之后,查看索引的数据:
可以看到,索引中的数据成功被修改。
【d】删除索引
通过DELETE命令实现删除,根据你的请求来判断是删除索引还是删除文档记录。
先来创建多两个索引并插入两条数据:
PUT /user2/_doc/1
{"name": "张三","age": 30
}PUT /user2/_doc/2
{"name": "李四","age": 20
}
- 删除文档记录
DELETE /user2/_doc/2
可以看到,id为2的文档记录已经成功删除。
- 删除索引库
DELETE user2
可以看到,索引库成功被删除,如下图:已经不存在user2索引库。
【e】查看索引情况
通过get _cat/xxx 命令可以获得es的当前很多信息。
GET /_cat/health
列出所有索引及存储大小:
GET /_cat/indices?v
- pri :primary缩写,主分片数量;
- rep :副分片数量;
- docs.count: Lucene 级别的文档数量;
- docs.deleted: 删除的文档;
- store.size: 全部分片大小(包含副本);
- pri.store.size: 主分片大小;
【f】查看集群的健康情况
GET _cluster/health
通过上面的命令来获取整个集群的状态,这个状态只能被 master node 所改变。
es 通过三种颜色来表明集群的建康程度
- Green : 主分片与副本都分配正常;
- Yellow : 主分片全部正常分配,有副本分片未能正常分配;
- Red :有主分片未能分配;例如:当服务器磁盘容量超过85%时,去创建一个新的索引;
【g】查看节点列表
GET /_cat/nodes?v
三、总结
本篇文章主要总结了Elasticsearch提供的Restful API,并且通过示例详细介绍了如何创建索引、往索引中插入数据并且修改、删除文档数据等,更多相关命令可以参考官方文档进行学习。由于笔者水平有限,文中可能有不对之处,还望小伙伴们指正,相互学习,一起进步!
ElasticSearch全文搜索引擎之Restful API和索引操作篇相关推荐
- 一文看懂-ElasticSearch全文搜索引擎
一文看懂-ElasticSearch全文搜索引擎 一.ElasticSearch简介 1.1 什么是ElasticSearch ElasticSearch简称ES,其中Elastic 从名字里我们可以 ...
- Elasticsearch全文搜索引擎,从0到0.6
目录 一,ES简介 1,es实现原理 2,基本结构 3,ELK 二.Linux搭建环境 1,jdk安装 2,安装Elasticsearch 3,启动es 4,启动es可能遇到的错误 4,在windon ...
- Elasticsearch全文搜索引擎-PHP使用教程。
1.声明依赖关系: 比方说,你的项目中需要一个php版的elasticsearch框架.为了将它添加到你的项目中(下载),你所需要做的就是创建一个 composer.json 文件,其 ...
- PHP使用Elasticsearch 全文搜索引擎的开发
PHP基于elasticsearch全文搜索引擎的开发 1.概述: 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选.Elastic ...
- ElasticSearch 全文搜索引擎的查询详解①(Ubuntu版 v6.6.2)
ElasticSearch 全文搜索引擎的查询详解①(Ubuntu版 v6.6.2) 1. 前提 2. 轻量搜索 2.1 单条件查询 2.2 多条件查询 2.3 不指定属性查询(查询所有文档属性)-- ...
- ElasticSearch查询所有数据restful api以及java代码实现
elasticsearch查询所有数据restful api以及java代码实现 restful api实现如下: get http://192.168.1.111:9200/film/dongzuo ...
- ElasticSearch 全文搜索引擎
一.ElasticSearch 简介 1.什么是 ElasticSearch? Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储.检索数据:本身 ...
- ElasticSearch 全文搜索引擎;ES 搜索引擎
一.ElasticSearch 简介 1.什么是 ElasticSearch? Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储.检索数据:本身 ...
- ElasticSearch全文搜索引擎
一.ElasticSearch简介 1.1 什么是ElasticSearch ElasticSearch简称ES,其中Elastic 从名字里我们可以知道,ES的特点就在于灵活的搜索,其实E ...
- ElasticSearch——全文搜索引擎
一.为什么需要全文搜索引擎? 首先先来了解一个概念,在我们生活中一般来说有两种数据:结构化数据.非结构化数据 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等. 非结构化数据: 非结构化 ...
最新文章
- java基本类型转换,随记
- nmon安装为什么重启mysql_Nmon的安装及使用
- MyEclipse小问题与汉字处理
- 多模光纤收发器购买时需要注意什么问题?
- 别人7天乐,运维还苦逼值班?
- (模拟+floyd)Saving James Bond
- Spring Boot Starter 常用列表
- Python中的音频和数字信号处理(DSP)
- ESP8266的Arduino IDE下载和TTL下载
- 磁力云播Android代码,磁力云播
- mac更新完后读取不出移动硬盘的问题解决
- 学习Java,可以从事哪些岗位?
- 【Word】批量修改Word 图片大小
- (18)全民小视频引流脚本模块化开发12-任务总数与时间间隔By飞云脚本学院
- mysql广告投放查询_广告投放数据分析
- 小招喵跑步[java]
- linux 翻录cd,Linux下一个CD翻录 创CUE 压缩flac攻略
- express跨域配置
- 现在很多人都想做抖音短视频,那我们应该怎样去做呢?一起来看一吧
- 全国计算机一级ms考试内容,2020年全国计算机等级考试一级MSOFFICE考试内容