本文介绍elasticsearch的概念和CURD
文章目录
1. 基本概念
http://localhost:9200/{_index}/{_type}/{_id}
例如:
http://localhost:9200/blog/user/1
关系型数据库 | elasticsearch |
---|---|
数据库 blog | _index |
表 user | _type |
行(id为1) | Document |
列(比如name) | fields |
2. 增删改查
elasticsearch 是遵循restful风格提供API接口的,所以对应的增删改查方式对应如下
请求方法 | 说明 |
---|---|
POST | 创建 /db |
GET | 查询 /db/table/id |
PUT | 更新或创建 /db/table/id |
DELETE | 删除 /db/table/id |
2.1 数据库操作(indexes)
2.1.1 创建数据库
curl -X PUT 'localhost:9200/blog'
返回结果:
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "blog"
}
2.1.2 删除数据库
curl -X DELETE 'localhost:9200/blog'
返回结果:
{
"acknowledged": true
}
注意删除后的indexes 不是真的删除了,而是内部改变了状态后查询不到了,所以不能重新使用
POST
方法进行创建,需要使用PUT
方法。
POST
会出现 405,GET
会出现 404
2.2 创建文档(表和记录)
elasticsearch 是以json文档形式存储数据的,使用_type 来区分文档归属,即所属表,所以创建文档的时候
添加分类_type 可以直接创建表同时加入记录
curl -X POST 'localhost:9200/blog/user -d '
{
"id": 1,
"name": "zhangsan",
"score": 78.5,
"age": 25,
"gender": "F"
}'
在未指定_id
的情况下,使用POST方法来创建一条记录,如果使用PUT
会出现 405
创建成功,返回结果:
{
"_index": "blog",
"_type": "user",
"_id": "chGm_mgB1Lja9i2Q0fSA",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
2.3 更新文档
curl -X PUT 'localhost:9200/blog/user/chGm_mgB1Lja9i2Q0fSA -d '
{
"id": 1,
"name": "zhangsan",
"score": 80.5,
"age": 26,
"gender": "F"
}'
打印结果:
{
"_index": "blog",
"_type": "user",
"_id": "chGm_mgB1Lja9i2Q0fSA",
"_version": 2,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 1,
"_primary_term": 1
}
可以看到更新一次,版本号
_version
会自动加 1
2.4 删除文档
curl -X DELETE 'localhost:9200/blog/user/chGm_mgB1Lja9i2Q0fSA'
打印结果:
{
"_index": "blog",
"_type": "user",
"_id": "chGm_mgB1Lja9i2Q0fSA",
"_version": 3,
"result": "deleted",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 2,
"_primary_term": 1
}
2.5 查询文档
curl -X GET 'localhost:9200/blog/user/chGm_mgB1Lja9i2Q0fSA'
打印结果:
{
"_index": "blog",
"_type": "user",
"_id": "chGm_mgB1Lja9i2Q0fSA",
"_version": 2,
"_seq_no": 1,
"_primary_term": 1,
"found": true,
"_source": {
"id": 1,
"name": "zhangsan",
"score": 80.5,
"age": 26,
"gender": "F"
}
}
2.6 删除类型(表)
POST _indexex/_type/_delete_by_query?conflicts=proceed
{
"query": {
"match_all": {}
}
}