ElasticSearch RESTFul语法
查询
#GET请求
# 查询索引
http://ip:port/index
# 查询文档
http://ip:port/index/type/doc_id
# POST请求
# 查询文档,在请求体中传入JSON串作为查询条件
http://ip:port/index/type/_search
修改
# POST方式
# 修改文档,在请求体中传入JSON串参数
http://ip:port/index/type/_update
新增
# PUT请求
# 创建索引,在请求体中传入JSON串参数,指定索引的信息
http://ip:port/index
# 创建索引,并指定文档存储的属性的信息
http://ip:port/index/type/_mappings
删除
# DELETE操作
# 删除索引
http://ip:port/index
# 删除文档
http://ip:port/index/type/doc_id
索引操作
创建索引
# 创建一个简单的索引
PUT /demo
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
}
}
# 创建一个索引,并添加type和document数据
PUT /megacorp/employee/1
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
查看索引
# 查看索引信息
GET /demo
GET /megacorp
删除索引
# 删除一个索引
DELETE /demo
文档操作
文档在ES中通过_index
、_type
、_id
三个值来唯一标识。
以给如下book索引为例:
PUT /book
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
},
"mappings": {
"IT":{
"properties":{
"name":{
"type":"text",
"analyzer":"ik_max_word",
"index":true,
"store":false
},
"author":{
"type":"keyword"
},
"count":{
"type":"long"
},
"onsale":{
"type":"date",
"format":"yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || epoch_millis"
},
"descr":{
"type":"text"
},
"price":{
"type":"double"
}
}
}
}
}
来进行文档操作。
新增文档
自动添加_id
自动生成id的方式使用POST请求
// 不指定id,只有index/type
POST book/IT
{
"name":"深入理解Java虚拟机JVM(第三版)",
"author":"周志明",
"count":"1222222",
"onsale":"2019-11-01",
"descr":"一部从工作原理和工程实践两个维度深入解析JVM的著作,是计算机领域公认的经典……",
"price":"129.50"
}
手动指定_id
手动指定id的方式使用PUT请求。
// 指定index/type/id
PUT book/IT/1
{
"name":"Java编程思想(第四版)",
"author":"Bruce Eckel",
"count":"9787111213826",
"onsale":"2007-06-01",
"descr":"本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形……",
"price":"62.25"
}
修改文档
覆盖式修改
与新增时的手动指定_id的方式一致,使用PUT请求,须指定想要修改的id值。
以修改上面《Java编程思想(第四版)》
的字数为例:
// 指定index/type/id
PUT book/IT/1
{
"name":"Java编程思想(第四版)",
"author":"Bruce Eckel",
"count":"978711121",
"onsale":"2007-06-01",
"descr":"本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形……",
"price":"62.25"
}
修改完成后,版本编号变化了。
doc方式修改
采用POST请求,只会修改指定的field。
以修改上面《Java编程思想(第四版)》
的作者为例:
//需要在请求后添加'_update'
POST /book/IT/1/_update
{
// 指定修改方式为'doc'
"doc": {
"author":"布鲁斯·埃克尔"
}
}
查询文档
通过_id
使用GET请求,指定要查询的id
GET book/IT/1
kibana图形界面
使用kibana图形化界面方式查询
关键字检索
删除文档
通过_id
使用DELETE请求,通过id删除一个文档。
DELETE book/IT/1