创建
PUT /website/_doc/1/_create
{
"title": "My first blog entry",
"text": "Just trying this out..."
}
ID你可以不设置,不设置他会帮你设置一个的
POST /library/books/
{
"title": "Elasticsearch : the definitive guide",
"name": {
"first": "Vineeth",
"last": "Mohan"
},
"publish_date": "2015-02-06",
"price":"35.99"
}
返回结果中有个_id的,那就是es帮你设置的
POST /lagou-company-index/_doc/1
{
"name": "百度",
"job": "小度用户运营经理",
"payment": "30000",
"logo": "http://www.lgstatic.com/thubnail_120x120/i/image/M00/21/3E/CgpFT1kVdzeAJNbUAABJB7x9sm8374.png"
}
强制创建
如果id 存在就会报错
PUT /index/_doc/{id}?op_type=create {}
PUT /index/_doc/{id}/_create {}
创建的时候指定路由
自行指定routing的值, 相同的国家商品都到一个shard上
POST /abc/_doc/1?routing=bigdata
{
"name": "es",
"title": "let is rock"
}
查询
GET /library/books/1
GET /library/books/2
可以通过source获取指定的字段
GET /library/books/1?_source=title,price
GET /lagou-company-index/_doc/1
查看所有文档
POST /索引名称/_search
{
"query": {
"match_all": {}
}
}
_source定制返回结果
不需要搜索引擎返回source中的所有字段,可以使用source进行定制,如下, 个字段之间使用逗号分隔
GET /lagou-company-index/_doc/1?_source=name,job
更新
全量更新
把刚才新增的请求方式改为PUT,就是修改了,不过修改必须指定id
- id对应文档存在,则修改
- id对应文档不存在,则新增
我们更新同一个id下的文档,可以通过覆盖更新POST /索引名称/_doc { "field":"value" }
查询下PUT /library/books/1 { "title": "Elasticsearch : the definitive guide", "name": { "first": "Vineeth", "last": "Mohan" }, "publish_date": "2015-02-06", "price":"25.99" }
GET /library/books/1
局部更新
或者通过_update
这个api方式单独更新你想更新的字段
POST /library/books/1/_update
{
"doc": {
"price": 10
}
}
POST /library/books/1/_update
{
"doc": {
"title": "fly"
}
}
注意
Elasticsearch执行更新操作的时候,Elasticsearch首先将旧的文档标记为删除状态,然后添加新 的文档,旧的文档不会立即消失,但是你也无法访问,Elasticsearch会在你继续添加更多数据的时候在 后台清理已经标记为删除状态的文档。
全部更新,是直接把之前的老数据,标记为删除状态,然后,再添加一条更新的(使用PUT或者 POST) 局域更新,只是修改某个字段(使用POST)
局域更新,只是修改某个字段(使用POST)
POST /索引名/_update/{id}
{
"doc":{
"field":"value"
}
}
删除
DELETE /索引名/_doc/{id}
然后我们GET下,看下结果
发现found是false
{
"_index" : "lagou-company-index",
"_type" : "_doc",
"_id" : "3",
"found" : false
}
也可以删除type
DELETE /library/books
也可以删除索引
DELETE /library
删除所有文档
POST 索引名/_delete_by_query
{
"query": {
"match_all": {}
}
}
按照条件删除
POST /main_escape_fish/_delete_by_query
{
"query": {
"match": {
"idTenant": "105"
}
}
}
文档元数据解读
元数据项 | 含义 |
---|---|
_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 |
_primary_term | 任何类型的写操作,包括index、create、update和Delete,都会生成一个_seq_no。 |
found | true/false,是否查找到文档 |
_source | 存储原始文档 |