创建一个文档
文档的Type名都约定为_doc。
自动生成文档id
使用POST方法
post users/_doc
{
"firstName": "Jack",
"lastName": "Johhson",
"tags": ["guitar", "skateboard"]
}指定文档id
使用PUT方法。
put users/_create/1
{
"firstName": "Jack",
"lastName": "Johnson",
"tags": ["guitar", "skateboard"]
}如果id已经存在则会创建失败。
找到一个文档
通过GET方法根据id找到一个文档。找到文档返回200,找不到返回404. 返回的数据中包括文档的数据和文档的元信息。
get users/_doc/1
{
"_index": "users",
"_type": "_doc",
"_id": "1",
"_version": 32,
"_seq_no": 36,
"_primary_term": 1,
"found": true,
"_source": {
"firstName": "Jack",
"lastName": "Johnson",
"age":39,
"tags": [
"guitar",
"skateboard"
]
}
}Index文档
与创建不同的是:如果文档不存在,则创建新文档;如果存在,那么现有文档会被删除,然后创建新的文档,同时将版本信息+1。
即会覆盖旧文档。
put users/_doc/1
{
"tags": ["guitar","skateboard","reading"]
}如果存在id为1的文档,那么就会被新的文档覆盖,然后_version的值加1。
更新文档
与Index文档不同,不会删除原来的文档,而是实现真正的数据更新。 使用POST方法,更新的数据要包含在”doc”中。
POST users/_update/1
{
"doc": {
"albums": ["Albums1", "Albums2"]
}
}批量更新
每次请求建立需要耗费资源,使用批量操作可以一次执行多个操作。 其API如下:
POST _bulk单个操作失败并不会影响其它操作。返回结果包括了每一条操作的结果。
批量读取
mget
可以一次从多个索引读取多个文档 示例如下:
GET /_mget
{
"docs": [
{
"_index": "test",
"_id": "1"
},
{
"_index": "test",
"_id": "2"
}
]
}msearch
同样可以从不同的索引读批量读取文档。 示例如下:
POST kibana_sample_data_ecommerce/_msearch
{}
{"query":{"match_all":{}},"size":1}}
{"index": "kibana_sample_data_flights"}
{"query": {"match_all":{}}, "size":2}}