ES学习(2)-基本概念

ES基本概念

索引

索引同数据库

http://192.168.1.112:9200/customer/external/1

如上链接中,customer就是索引

类型

类型同表
如上链接中,external就是类型

添加一个数据

PUT:

为数据库customer的external类型id为1的数据添加或更新一条记录
put不允许不带id

http://192.168.1.112:9200/customer/external/1
{
    "name": "Paosin"
}

Resp

{
    "_index": "customer", // 该数据库
    "_type": "external", // 该类型
    "_id": "1", // 保存数据的id
    "_version": 3, // 保存数据的版本
    "result": "updated", // 保存结果,第一次展示"created",之后展示"update"
    "_shards": { //分片
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 2,
    "_primary_term": 1
}

其中,带有“_”的叫做元数据

POST

可以不用带id参数,直接添加并自动赋予一个id,每次发送产生不同的id
带id就是更新

http://192.168.1.112:9200/customer/external
{
    "name": "Paosin"
}

Resp

{
    "_index": "customer",
    "_type": "external",
    "_id": "xaYAhnYBKCkh7cL4m9V6", # 自动赋予的id
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 3,
    "_primary_term": 1
}

并发控制

先查操作之前当前数据的_seq_no,_primary_term值比如各自是0和1
在更新的时候url带上if_seq_no=0&if_primary_term=1
指明只有在这个值的情况下才进行更新,否则返回错误

http://192.168.1.112:9200/customer/external/1?if_seq_no=2&if_primary_term=1
{
    "name":"test seq put"
}

_update语法

可以使用该语法指定更新
必须将数据包裹在doc节点下
当数据完全一致时,将不会更新,_version、_seq_no不会增加
POST

http://192.168.1.112:9200/customer/external/1/_update
{
    "doc": {
        "name": "John"
    }
}

根据id删除

DELETE

http://192.168.1.112:9200/customer/external/1

RESP

{
    "_index": "customer",
    "_type": "external",
    "_id": "1",
    "_version": 5,
    "result": "deleted",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 5,
    "_primary_term": 2
}

ES支持删除索引,但不支持删除类型

你可能感兴趣的:(ES学习(2)-基本概念)