基本Rest命令说明
method | url地址 | description |
---|---|---|
PUT | 127.0.0.1:9200/索引名称/文档id | 创建一个文档(指定文档id) |
POST | 127.0.0.1:9200/索引名称 | 创建要给文档(随机文档id) |
POST | 127.0.0.1:9200/索引名称/文档id/_update | 修改一个文档 |
DELETE | 127.0.0.1:9200/索引名称/文档id/ | 删除一个文档 |
GET | 127.0.0.1:9200/索引名称/文档id/ | 通过文档id查询文档 |
POST | 127.0.0.1:9200/索引名称/_search | 查询所有数据 |
1、Create 一个文档
使用 HTPP PUT 请求
- 支持自动生成文档 Id 和指定文档 Id 两种方式
- 通过调用 “post /users/_doc”,系统会自动生成 document Id
- 使用 HTTP PUT users/_create/1 创建时,URI 中显示指定 _create,此时如果该 Id 的文档已经存在,操作失败。
自己指定文档ID:
PUT 索引名/_create/文档ID
系统自动生成文档ID:
POST 索引名/_doc
,系统会自动生成文档ID
示例:
//create document 指定ID
PUT users/_doc/1
{
"user":"Jack",
"post_data":"2020-02-09T18:01",
"message":"trying out Kibana"
}
//create document 自动生成ID
POST users/_doc
{
"user":"Mike",
"post_data":"2020-02-09T18:07",
"message":"trying out Kibana"
}
创建一个索引,并且指定字段类型以及分片数量
PUT twitter
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"name":{
"type": "text"
},
"desc":{
"type": "keyword"
}
}
}
}
创建了名为 twitter 的索引库,分别指定name和description字段的类型。设置了2个shards,并且有一个replica。
可以使用 GET twitter/_settings?pretty
命令查看索引信息。
text和keyword的区别
text
会被分词器解析。
keyword
不会被分词器解析。
2、Get 一个文档
使用 HTTP GET 请求
- 找到文档 ,返回 HTTP 200
- 文档元信息
- _index / _doc /
- 版本信息,同一个 Id 的文档,即使被删除, Version 号也会不断增加(每次改动都会加1)
- _source 中默认包含了文档的所有原始信息
- 文档元信息
- 找不到文档,返回 HTTP 404
根据文档id精确查询
GET person/_doc/1
: GET 索引名/_doc/文档ID
查询全部文档信息
GET person/_doc/_search
: GET 索引名称/_doc/_search
根据文档字段值精确查询及模糊查询,可以根据默认的映射规则,产生基本的查询
GET person/_doc/_search?q=name:张三
:GET 索引名/_doc/_search?q=字段名:查询条件
3、Index 文档
使用 HTTP PUT 请求
Index 和 Create 不一样的地方:
如果文档不存在,就索引新的文档。否则现有文档会被删除,新的文档会被索引。_version + 1。
PUT 索引名/_doc/文档ID
4、Update 文档
使用 HTTP POST 请求
- Update 方法不会删除原来的文档,而是实现真正的数据更新
- Post 方法 / Payload 需要包含在 “ doc ” 中
POST 索引名/_update/文档ID
{
"doc":{ //在请求体中指定doc,再把相应文档提供在HTTP body中
"albums":["Album1","Album2"]
}
}
5、Delete 文档
使用 HTTP DELETED 请求
DELETE 索引名/_doc/文档ID
Bulk API
- 支持在一次 API 调用中,对不同的索引进行操作
- 支持四种类型操作
- Index
- Create
- Update
- Delete
- 可以在 URI 中指定 Index,也可以在请求的 Payload 中进行
- 操作中 单条 操作失败,并不会影响其他操作
- 返回结果中包括了每一条执行的结果
POST _bulk
示例:
POST _bluk
{ "index" : {"_index" : "test", "_id" : "1"} }
{ "field1" : "value1" }
{ "delete" : {"_index" : "test", "_id" :"2"} }
{ "create" : {"_index" : "test2", "_id" :"3"} }
{ "field1" : "value3"}
{ "update" : {"_id" : "1", "_index" :"test"} }
{ "doc" : { "field2" : "value2" } }
批量读取 — mget
批量操作,可以减少网络连接中所产生的开销,提高性能。
只需要提供一系列的文档ID,就可以查询出这些文档的信息。
GET /_mget
示例:
GET _mget
{
"docs":[
{
"_index":"test",
"_id":"1"
},
{
"_index":"test",
"_id":"2"
}
]
}
批量查询 — msearch
POST users/_msearch
Elasticsearch 常见错误返回
问题 | 原因 |
---|---|
无法连接 | 网络故障或集群挂了 |
连接无法关闭 | 网络故障或节点出错 |
429 | 集群过于繁忙 |
4xx | 请求体格式错误 |
500 | 集群内部错误 |