- 1.查看ES状态
GET http://hadoop001:9200/_cat/health
红色表示数据不可用,黄色表示数据可用,部分副本没有分配,绿色表示一切正常
2.查询ES全部存在的索引
GET http://hadoop001:9200/_cat/indices?v
3.添加索引
PUT http://hadoop001:9200/要添加的索引名称 #示例 http://hadoop001:9200/index001 |
索引=表 (properties下面内容就是表示这个表的每个字段的类型)
4.单独添加一个字段类型
在ES7中可以不用一次性把全部字段的映射信息都创建好, 可以根据后来根据业务情况自行进行补充
因为: 现在一个索引下面的数据全部都通用一个类型(_doc)
比如: 我现在index1索引映射的类型是:
{ "mappings": { "properties": { "name": { "type": "text" }, "age": { "type": "integer" } } } } |
{ "mappings": { "properties": { "name": { "type": "text" }, "age": { "type": "integer" } } } } |
插入时候数据是
{ "name":"胡旺", "age":"22" } |
添加一个时间字段,用于查询指定时间段的数据
第一步先添加映射字段
PUT http://hadoop001:9200/指定索引/_mappings |
{ "properties": { "time": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis||date_optional_time ", "index": true } } } |
会有三种情况发生:
- 如果原来存在那么判断类型是否一致如果都一样那么, 执行成功
- 如果原来不存在,就在原来的映射里添加这个字段映射信息, 执成功
- 如果原来字段存在,并且原来字段内数据的类型和要修改的不一样,那么就会报错
mapper [time] of different type, current_type [text], merged_type [date]
为了避免第3点的问题发送,我们在映射字段前去查询下当前索引的映射情况,不要和原来的字段名称一样了 ,查询索引内映射的语法如下
GET http://hadoop001:9200/index1/_mappings |
5.创建索引的同时添加字段信息
PUT http://hadoop001:9200/要添加的索引名称 |
示例:
PUT http://hadoop001:9200/index_01 请求体: { "mappings": { "properties": { "name": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } , "price": { "type": "float" } } } } |
我们在es中添加索引数据时,可以不需要指定数据类型,es中有自动影射机制,字符串映射为string,数字映射为long。ignore_above忽略长度超过256字符串。 用于设置超过指定字符后,超出的部分不能被索引或者存储。
注意: 只要是需要查询的字符串类型的一定要使用
- “type”:“text”
- “analyzer”: “ik_max_word”
- “index”: true
其他不参与索引的配置
- “type”: “long”
- “index”: false
6.修改索引映射信息
Elasticsearch 并不支持修改mapping映射字段,无法直接修改,所以需要曲线救国。
原来的索引 index_01, 新索引index_02
- 先创建一个新索引,然后添加玩映射信息
PUT http://hadoop001:9200/index_02 |
- 将原来索引数据迁移到新索引中
POST http://hadoop001:9200/_reindex?slices=auto&refresh |
请求体
{ "source": { "index": "index_01", "size": 5000 }, "dest": { "index": "index_02", "version_type": "internal" } } |
source->index(原来的索引名称)
dest->index(新索引名称)
其他的配置不用动
- 删除原来的索引
DELETE http://hadoop001:9200/index_01 |
- 给新索引添加别名 ,别名的名称是原来索引的名称,这样就不会影响到程序
POST http://hadoop001:9200/_aliases |
8.查询指定索引的详情
GET http://hadoop001:9200/索引名称/_mappings |
示例
GET http://hadoop001:9200/index_1/_mappings |
9.删除指定索引
DELETE http://[LocalHost]:9200/索引名称 |
示例
DELETE http://hadoop001:9200/index_02 |
10.查询指定索引下全部数据
GET http://hadoop001:9200/索引名称/_search |
示例
GET http://hadoop001:9200/index1/_search |
11.清空索引下全部数据
POST http://hadoop001:9200/index1/_delete_by_query |
请求体
{ "query": { "match_all": {} } } |
12.文档基本操作
创建文档document(一条数据)
文档等同于数据库的1行, 在es7x必须通过{index}/_doc 来自动创建id,通过{index}/_doc/{id}指定文档的id
POST http://hadoop001:9200/index1/_doc/文档的id |
示例
POST http://hadoop001:9200/index1/_doc/1 |
{ "name":"胡", "age":"22" } |
12.1 查询指定索引下的指定文档
GET http://hadoop001:9200/index1/_doc/文档id |
示例
GET http://hadoop001:9200/index1/_doc/1 |
12.2 删除指定索引下的指定文档
DELETE http://hadoop001:9200/index1/_doc/文档id |
示例
DELETE http://hadoop001:9200/index1/_doc/1 |