1. 新建文档

  • 支持自动生成文档 ID 和指定文档 ID 两种方式
  • 通过调用 “post/users/_doc” ,系统会自动生成 document id
  • 使 用HTTP PUT /usr/_create/1 创建时,URL中显示指定 _create ,此时如果改 ID 的文档已经存在,操作失败

新建一个索引,然后向索引中添加一个文档

1. 使用kibana创建
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
}
  • _index 表示文档索引。
  • _type 表示文档的类型。
  • _id 表示文档的 id。
  • _version 表示文档的版本(更新文档,版本会自动加 1,针对一个文档的)。
  • result 表示执行结果。
  • _shards 表示分片信息。
  • _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
}
2. 使用 curl 命令创建

创建文档,指定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格式来撰写上传文档内容

索引初始化,创建索引之前可以对索引做初始化操作,比如指定shards数量以及replicas的数量

curl -XPUT 'http://master:9200/test/' -d \
'{
"settings":{
"index":{
"number_of_shards":5
"number_of_replicas":1
}
}
}'

适当的提升分片数量可以提升建立索引的速度;

一般情况下:一个索引库建立5-20个分片是最合适的;

注意:如果分片过少或者过多,都会降低检索的速度

分片数过多会导致:

  • 会导致打开比较多的文件

  • 分片是存储在不同机器上的,分片数越多,机器之间的交互也就越多;

分片数太少导致:

  • 单个分片索引过大,降低整体的检索速率

建议:

  • 将单个分片存储存储索引数据的大小控制在20G左右;绝对不要超过50G , 否则性能很差

最终分片数量 = 数据总量/20G

多副本可以提升检索的能力,但是如果副本数量太多,插入数据的时候容易出现卡顿现象;

因为主分片要把数据同步给所有的副本,所以建议副本数量最好是1-2个;

Es在索引数据的时候,如果存在副本,那么主分片会将数据同时同步到副本;

如果当前插入大量数据,那么会对es集群造成一定的压力,所以在插入大量数据前,也就是在建立索引的时候,我们最好把副本数设置为0;等数据建立完索引之后,在手动的将副本数更改到2,这样可以提高数据的索引效率

参考:https://www.cnblogs.com/niutao/p/10909358.html

查看索引

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和POST的用法区别

  • PUT, DELETE操作是幂等的。 所谓幂等是指不管进行多少次操作,结果都一样。 比如我用PUT修改一篇文章, 然后在做同样的操作,每次操作后的结果并没有不同, DELETE也是一样。

  • POST操作不是幂等的, 比如常见的POST重复加载问题: 当我们多次发出同样的POST请求后, 其结果是创建出了若干的资源。

  • 还有一点需要注意的就是, 创建操作可以使用POST, 也可以使用PUT, 区别在于POST是作用在一个集合资源之上的(/articles) ,而PUT操作是作用在一个具体资源之上的(/articles/123) , 比如说很多资源使用数据库自增主键作为标识信息, 而创建的资源的标识信息到底是什么只能由服务端提供, 这个时候就必须使用POST。

创建全新内容的两种方式:

  1. 使用自增ID(POST)
curl -H "Content-Type: application/json" -XPOST http://master:9200/test/user/ -d \
'{
"name" : "xiaoyaozi" }'
  1. 在url后面添加参数
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
}'

ElasticSearch创建文档的更多相关文章

  1. Elasticsearch创建文档,利用Kibana进行创建文档

    首先先来了解一下什么是文档,es里边的文档相当于mysql数据库里边的一张表,如果你用过mongodb的话,那么肯定对es这种数据格式一定很了解了.接下来我们来看一下如何创建一个文档. PUT /sd ...

  2. ElasticSearch(2)-文档

    上一篇 ES(1) 官网原地址:https://www.elastic.co/guide/en/elasticsearch/reference/1.7/_cluster_health.html ES权 ...

  3. elasticsearch 路由文档到分片

    路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是 ...

  4. elasticsearch——海量文档高性能索引系统

    elasticsearch elasticsearch是一个高性能高扩展性的索引系统,底层基于apache lucene. 可结合kibana工具进行可视化. 概念: index 索引: 类似SQL中 ...

  5. ElasticSearch——原始文档和倒排索引

    一.原始文档 如上图所示, 第二象限是一份原始文档,有title和content2个字段,字段取值分别为”我是中国人”和” 热爱共X产党”,这一点没什么可解释的.我们把原始文档写入Elasticsea ...

  6. Elasticsearch之文档的增删改查以及ik分词器

    文档的增删改查 增加文档 使用elasticsearch-head查看 修改文档 使用elasticsearch-head查看 删除文档 使用elasticsearch-head查看 查看文档的三种方 ...

  7. Elasticsearch 删除文档

    章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...

  8. Elasticsearch 更新文档

    章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...

  9. elasticsearch父子文档处理(join)

    elasticsearch父子文档处理 join 一.背景 二.需求 三.前置知识 四.实现步骤 1.创建 mapping 2.添加父文档数据 3.添加子文档 4.查询文档 1.根据父文档id查询它下 ...

随机推荐

  1. Micro Frontends & microservices

    Micro Frontends & microservices https://micro-frontends.org/ https://github.com/neuland/micro-fr ...

  2. Rollup & Webpack & Parcel

    Rollup & Webpack & Parcel package bundler https://x-team.com/blog/rollup-webpack-parcel-comp ...

  3. @bind decorator

    @bind decorator https://www.npmjs.com/package/bind-decorator https://github.com/NoHomey/bind-decorat ...

  4. auto skip function args

    auto skip function args https://repl.it/@xgqfrms/auto-skip-function-args "use strict"; /** ...

  5. 利用Metasploit 打入ThinkPHP内网...

    出品|MS08067实验室(www.ms08067.com) 本文作者:dch(Ms08067实验室 SRSP TEAM小组成员) 一.利用Metasploit进行攻击的流程图   Metasploi ...

  6. Gateway网关

    前提要在注册中心把网关和服务都进行注册 通俗来说,网关就是指在客户端和服务端的一面墙,这面墙有请求转发,负载均衡,权限控制,跨域,熔断降级,限流保护等功能. 客户端发送请求,请求先通过网关,网关根据特 ...

  7. html5的标签中,哪些是行内元素,哪些是块级元素。

    块级元素:块级大多为结构性标记 <address>...</adderss> <center>...</center>  地址文字 <h1> ...

  8. TERSUS无代码开发(笔记08)-简单实例电脑端后台逻辑开发

    主管审批功能逻辑开发 1.查询逻辑开发(查询待审批记录) 2.批准处理(将选中的一条记录进行批准处理)  =============================================== ...

  9. Redis持久化机制 RDB和AOF的区别

    一.简单介绍 Redis中的持久化机制是一种当数据库发生宕机.断电.软件崩溃等,数据库中的数据无法再使用或者被破坏的情况下,如何恢复数据的方法. Redis中共有两种持久化机制 RDB(Redis D ...

  10. 注册 Amazon Web Services(AWS) 账号,助园一臂之力

    感谢大家去年的大力支持,今年园子继续和 Amazon Web Services(AWS) 合作,只要您通过 博客园专属链接 注册一个账号(建议使用手机4G网络注册),亚马逊就会给园子收入,期待您的支持 ...