查看集群健康状态
GET /_cluster/health
添加索引
PUT /blogs { "settings" : { "number_of_shards" : 3, "number_of_replicas" : 1 } }
为已存在的索引添加副本
PUT /blogs/_settings
{
"number_of_replicas" : 2
}
元数据(metadata)
_index 文档存储的地方 必须是小写不能以下划线开头
_type 文档代表的对象类 不能包含下划线,或者逗号
_id 文档的唯一标识 可以自定义,也可以elasticsearch帮你生成
检索文档
GET /website/blog/123?pretty 查询指定id的信息
检索某个字段
GET /website/blog/123?_source=title,text 只会列出对应的字段信息title text
只是仅仅检索某个文档是否存在
curl -i -XHEAD http://localhost:9200/website/blog/123 成功就返回 200 的状态码
检索多个文档(减少网络的开销)
GET /_mget
{
"docs":[
{
"_index":"website",
"_type":"blog",
"_id":2
},
{
"_index":"website",
"_type":"pageviews",
"_id":1,
"_source":"views"
}
]
}
同时检索多个文档
也可以检索同一个index中的数据
GET /website/blog/_mget
{
"docs":[
{
"_id":2
},
{
"_type":"pageviews",
"_id":1
}
]
}
如果具有相同的_index和_type,可以通过数据代替
{
"ids" : [ "2", "1" ]
}
更新文档
PUT /website/blog/123 { "title": "My first blog entry", "text": "I am starting to get the hang of this...", "date": "2014/01/02" }
在相应体中,_version的版本号增加了
文档局部更新
POST /website/blog/1/_update { "doc" : { "tags" : [ "testing" ], "views": 0 } }
向blog插入两个字段doc是文档局部参数, tag和views字段
创建一个新文档
POST /website/blog/ Elasticsearch会自动生成一个唯一的_id
{ ... }
POST /website/blog/1 要自己指定id
{ ... }
删除文档
DELETE /website/blog/123 根据id删除文档
并发控制悲观并发控制
悲观并发控制
在读取的时候就锁定这行,然后确保只有加锁的线程可以执行修改操作
乐观并发控制
读写过程中数据发生变化,那么更新操作失败
在elasticsearc中可以使用_version号码,保证所以修改都被正确排序
当我我想修改一个数据的时候
可以先查询出对应的version
然后修改时带上对应的version
PUT /website/blog/1?version=1
{ ... }
成功时返回对应的version会加一,否则就失败
批量操作(单一请求实现多个文档的create,index,update或delete)
bulk请求体
{ action: { metadata }}\n
{ request body }\n
{ action: { metadata }}\n
{ request body }\n
...
action必须是以下行为
create | 当文档不存在时创建 |
index | 创建新文档或者替换已有文档 |
updata | 局部更新 |
delete | 删除文档 |
metadata
_index
_type
_id
{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }} { "create": { "_index": "website", "_type": "blog", "_id": "123" }} { "title": "My first blog post" } { "index": { "_index": "website", "_type": "blog" }} { "title": "My second blog post" } { "update": { "_index": "website", "_type": "blog", "_id": "123"}} { "doc" : {"title" : "My updated blog post"} }