本博客中使用的 ElasticSearch 均是 7.9+ 版本
PUT blog/_doc/1 # 1 表示新建文档的 id
{
"title":"雪中悍刀行",
"date":"2020-11-05",
"content":"关于庙堂权争与刀剑交错的江湖"
}
添加成功后,响应的 json 如下
{
"_index" : "blog",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
_seq_no
和 _primary_term
这两个也是版本控制用的(针对当前 index)当然,添加文档时,也可以不指定 id,此时系统会默认给出一个 id,如果不指定 id,则需要使用 POST 请求,而不能使用 PUT 请求。
POST blog/_doc
{
"title":"剑来",
"date":"2020-11-05",
"content":"烽火戏诸侯作品"
}
curl -H "Content-Type: application/json" -XPOST http://master:9200/test/_doc -d ‘{
"name": "qiaofeng",
"age": 28
}‘
curl -H "Content-Type: application/json" -XPOST http://master:9200/test/_doc -d ‘{
"name": "xuzhu",
"age": 22
}‘
curl -H "Content-Type: application/json" -XPOST http://master:9200/test/_doc -d ‘{
"name": "duanyu",
"age": 20
}‘
系统自动生成ID的不能使用 PUT 请求,因为会报错
{
"error" : "Incorrect HTTP method for uri [/blog/_doc?pretty=true] and method [PUT], allowed: [POST]",
"status" : 405
}
创建文档,指定Id,如果id已经存在,报错:
curl -H "Content-Type:application/json" -XPUT ‘http://10.135.73.73:9201/index_name/_doc/1?pretty‘ -d ‘{
"name": "xuwl",
"age": 18,
"job": "Linux"
}‘
-H:指定内容类型
-X:指定http请求方式,这里为PUT上传方式
http://10.135.73.73:9201:指定一台es服务器对外的http端口
/index_name:文档的索引名称,必须小写
/type_name:文档的类型名称,7.0开始一个索引只能创建一个Type ,即,“_doc”
/1:文档的ID编号
?pretty:人性化创建索引
-d:指定使用JSON方式来撰写上传文档
{ "name": "xuwl", "age": 18, "job": "Linux" }‘:使用JSON格式来撰写上传文档内容
curl -XPUT ‘http://master:9200/test/‘ -d ‘{
"settings":{
"index":{
"number_of_shards":5
"number_of_replicas":1
}
}
}‘
适当的提升分片数量可以提升建立索引的速度;
一般情况下:一个索引库建立5-20个分片是最合适的;
注意:如果分片过少或者过多,都会降低检索的速度
分片数过多会导致:
会导致打开比较多的文件
分片是存储在不同机器上的,分片数越多,机器之间的交互也就越多;
分片数太少导致:
建议:
最终分片数量 = 数据总量/20G
curl -XGET ‘http://10.135.73.73:9201/_cat/indices?v‘
可以看到我们分片存储的对应的地址,没有出现我们的master节点地址,也没有出现我们的client节点,仅仅只有我们所设置的数据存储节点,
额,下面还有10.150.55.95是我们的master节点的原因,是因为我把node.data设置为了true..... 我错了,
大家要相信我,只要把node.data设置为false它肯定是不会存储数据的。。。
curl -XGET ‘http://10.135.73.73:9201/_cat/shards?v‘
PUT, DELETE操作是幂等的。 所谓幂等是指不管进行多少次操作,结果都一样。 比如我用PUT修改一篇文章, 然后在做同样的操作,每次操作后的结果并没有不同, DELETE也是一样。
POST操作不是幂等的, 比如常见的POST重复加载问题: 当我们多次发出同样的POST请求后, 其结果是创建出了若干的资源。
还有一点需要注意的就是, 创建操作可以使用POST, 也可以使用PUT, 区别在于POST是作用在一个集合资源之上的(/articles) ,而PUT操作是作用在一个具体资源之上的(/articles/123) , 比如说很多资源使用数据库自增主键作为标识信息, 而创建的资源的标识信息到底是什么只能由服务端提供, 这个时候就必须使用POST。
curl -H "Content-Type: application/json" -XPOST http://master:9200/test/user/ -d ‘{
"name" : "xiaoyaozi"
}‘
curl -H "Content-Type: application/json" -XPUT http://10.135.73.73:9201/test/user/2?op_type=create -d ‘{
"name":"lucy",
"age":18
}‘
curl -H "Content-Type: application/json" -XPUT http://10.135.73.73:9201/test/user/3/_create -d ‘{
"name":"lily",
"age":28
}‘
原文:https://www.cnblogs.com/wysxr/p/14630686.html