1、使用映射来定义各种文档
使用类型划分同一索引中的数据类型包含了映射中每个字段的定义。映射包括了该类型文档中可能出现的所有字段。
检索和定义映射
curl -XPUT 'localhost:9200/get-together/_mapping/new-events' -d'{
"new-events":{
"properties": {
"host": {"type": "string"}
}
}
}'
扩展现有映射
- 如果需要修改现有映射的字段类型,需要将类型中的数据移除、设置新的映射、再次索引所有数据
2、用于定义文档字段的核心类型
核心字段类型3、数组和多字段
数组
curl -XPUT 'localhost:9200/blog/posts/1' -d '{
"tags":['first', 'initail']
}'
- tags字段会被定义成字符串型
多字段
- 字段里可以再嵌套字段
4、预定义字段
- 预定义字段总是以下划线开头
- 是一些ES默认就有的字段,可以实现一些功能
存储和搜索文档
- _source 按照原有的格式来存储原有的文档
- 可以通过指定field来仅返回某个字段
curl -XGET 'localhost:9200/get-together/group/1?pretty&fields=name'
- _all是索引所有的信息,不会考虑是哪个字段匹配成功,返回命中文档
识别文档
- _uid字段可唯一标识一篇文档,由_id和_type组成
5、更新现有文档
更新文档- 检索现有文档
- 进行制定修改
- 删除旧文档
使用更新API
- 发送部分文档
curl -XPOST 'localhost:9200/get-together/group/2_update' -d '{
"doc": {
"organizer": "Roy"
}
}'
- 如果文档不存在,可以upsert来创建上不存在的文档
curl -XPOST 'localhost:9200/get-together/group/2_update' -d '{
"doc": {
"organizer": "Roy"
},
"upsert": {
"name": "ES Denver",
"organizer": "roy"
}
}'
- 脚本更新,可以使用ctx._source来引用某个指定字段,可以在params下指定变量
curl -XPOST 'localhost:9200/online-shop/shirts/1' -d '{
"caption":"learning es",
"price":15
}'
curl -XPOST 'localhost:9200/online-shop/shirts/1_update' -d '{
"script":"ctx._source.price += price_diff",
"params": {
"price_diff": 10
}
}'
通过版本实现并发控制
- 更新操作进行重新索引时就会检查版本号与现有的版本是否一致,不一致会更新失败,更新成功后会更新版本号
6、删除数据
删除文档
- 通过id删除
- 删除映射类型
- 根据条件批量删除
// 删除类型等同于查询类型字段名称 = xxx的所有文档然后删除,会比较慢
curl -XDELETE 'localhost:9200/online-shop/shirts'
curl -XDELETE 'localhost:9200/get-together/_query?q=elasticsearch'
关闭索引
- 关闭之后就无法通过ES读取和写入其中的数据
curl -XPOST 'localhost:9200/online-shop/_close'
curl -XPOST 'localhost:9200/online-shop/_open'
网友评论