上一篇:ElasticSearch(2)—安装
1.什么是CURL?
CURL是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求。简单的认为是可以在命令行下面访问url的一个工具。在centos的默认库里面是有curl工具的,如果没有可以yum安装。
参数:
参数 | 描述 |
---|---|
-X | 指定Http的请求方法(HEAD、GET、POST、PUT、DELETE) |
-d | 指定要传输的数据(一般是json) |
-H | 指定http请求头信息 |
3.CURL使用语法?
检查服务是否能够正常使用:curl -XGET 'http://<ip>:9200'
,显示如下则可以正常使用
1.创建索引库
curl -XPUT http://<ip>:9200/index_name/
PUT和POST都可以创建,PUT适用于用户更新,POST更适合新增
索引库名必须全部小写,且不能以下划线开头,也不能包含逗号
案例:创建一个名为mydata
的索引库
curl -XPUT 'http://127.0.0.1:9200/mydata'
2.创建索引
早期的版本中,content-type
是可选的。自ElasticSearch 6.0之后,所有包含主体的REST请求必须为该主体提供正确的内容类型。
curl -H'Content-Type: application/json' -XPOST 'http://<ip>:9200/索引库名/type/索引数据ID' -d {json类型的数据}
如果没有明确指定索引数据的ID,那么es会自动生成一个随机的ID,需要使用POST参数
案例:创建一个类型为product
的索引
curl -H'Content-Type: application/json' -XPOST 'http://120.76.217.14:9200/mydata/product/1' -d '{"name":"book","address":"beijing"}'
3.查看创建的索引
ElasticSearch(1)—基础概念中记录了ES
中内置的REST接口,使用/index/_search
查询创建的索引。
3.1 查询所有的索引
curl -XGET 'http://<ip>:9200/索引库名/索引类型(type)/_search?pretty'
3.2 查询指定ID的索引
curl -XGET 'http://120.76.217.14:9200/mydata/product/2?pretty'
3.3 查询指定ID的索引的某字段
curl -XGET 'http://120.76.217.14:9200/mydata/product/2?_source=name&pretty'
只显示name
,没有显示address
。
3.4 查询指定条件的索引
curl -XGET 'http://120.76.217.14:9200/mydata/product/_search?q=name:"条件"&pretty'
查询name=water
的索引
输入以下命令:
curl -XGET 'http://120.76.217.14:9200/mydata/product/_search?q=name:"water"&pretty'
查询address:shenzhen
的索引:
curl -XGET 'http://120.76.217.14:9200/mydata/product/_search?q=address:"shenzhen"&pretty'
4.修改索引数据
一、全局更新
全局更新可以理解为将原有的索引document删除了之后,再重新创建一个document。
案例:将id
为1的索引数据更新为"address":"sichaun"
curl -H 'Content-Type:application/json' -XPOST 'http://120.76.217.14:9200/mydata/product/1?pretty' -d '{"address":"sichuan"}'
当我们再次查询发现原来索引中的"name":"book"
已经没有了,这是全局更新
二、局部更新
现在我需要把mydata
索引库中的id为2的索引数据中的address
修改为深证
,其他数据不变。
curl -H 'Content-Type:application/json' -XPOST 'http://<ip>:9200/索引库名/索引类型/索引ID/_update?pretty' -d '{"doc":{"key":"value"}}'
[zhangsan@tomcat-tst elasticsearch-7.6.0]$ curl -H 'Content-Type:application/json' -XPOST 'http://120.76.217.14:9200/mydata/product/2/_update?pretty' -d '{"doc":{"address":"shenzhen"}}'
{
"_index" : "mydata",
"_type" : "product",
"_id" : "2",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 5,
"_primary_term" : 1
}
[zhangsan@tomcat-tst elasticsearch-7.6.0]$
再查询以下索引看下是否更新成功:
成功将原来的shanghai
修改为shenzhen
5.删除索引
curl -XDELETE 'http://<ip>:9200/索引库名/索引类型/索引ID'
如果文档存在:found:true,successful:1,_version:+1 ,如果文档不存在的时候,found:false,版本号_version:+1。这有点类似于svn的版本号,它保证了多个节点之间不同操作的顺序被正确标记了。
一个文档被删除之后,不会立即生效,他只是被标记为已删除,ES将会在以后添加更多索引的适合才会在后台进行删除
案例:删除指定ID为1的索引
omcat-tst elasticsearch-7.6.0]$ curl -XDELETE 'http://120.76.217.14:9200/mydata/product/1?pretty'
{
"_index" : "mydata",
"_type" : "product",
"_id" : "1",
"_version" : 4,
"result" : "not_found",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 7,
"_primary_term" : 1
}
再查询一下:只剩下id为2的索引了。