ElasticSearch创建文档
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。
创建全新内容的两种方式:
- 使用自增ID(POST)
curl -H "Content-Type: application/json" -XPOST http://master:9200/test/user/ -d \
'{
"name" : "xiaoyaozi"
}'
- 在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创建文档的更多相关文章
- Elasticsearch创建文档,利用Kibana进行创建文档
首先先来了解一下什么是文档,es里边的文档相当于mysql数据库里边的一张表,如果你用过mongodb的话,那么肯定对es这种数据格式一定很了解了.接下来我们来看一下如何创建一个文档. PUT /sd ...
- ElasticSearch(2)-文档
上一篇 ES(1) 官网原地址:https://www.elastic.co/guide/en/elasticsearch/reference/1.7/_cluster_health.html ES权 ...
- elasticsearch 路由文档到分片
路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是 ...
- elasticsearch——海量文档高性能索引系统
elasticsearch elasticsearch是一个高性能高扩展性的索引系统,底层基于apache lucene. 可结合kibana工具进行可视化. 概念: index 索引: 类似SQL中 ...
- ElasticSearch——原始文档和倒排索引
一.原始文档 如上图所示, 第二象限是一份原始文档,有title和content2个字段,字段取值分别为”我是中国人”和” 热爱共X产党”,这一点没什么可解释的.我们把原始文档写入Elasticsea ...
- Elasticsearch之文档的增删改查以及ik分词器
文档的增删改查 增加文档 使用elasticsearch-head查看 修改文档 使用elasticsearch-head查看 删除文档 使用elasticsearch-head查看 查看文档的三种方 ...
- Elasticsearch 删除文档
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- Elasticsearch 更新文档
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- elasticsearch父子文档处理(join)
elasticsearch父子文档处理 join 一.背景 二.需求 三.前置知识 四.实现步骤 1.创建 mapping 2.添加父文档数据 3.添加子文档 4.查询文档 1.根据父文档id查询它下 ...
随机推荐
- mdn & remove & removeChild
mdn & remove & removeChild Element https://developer.mozilla.org/en-US/docs/Web/API/Element ...
- NGK” 呼叫河马 “智能合约火爆全网
最近有一款基于NGK.IO公链上的智能合约"呼叫河马"在区块链市场很火.通过访问和查阅资料可知,"呼叫河马"是一款全新的智能合约Dapp小游戏,智能合约代码是1 ...
- NGK——解决区块链用户之“难”
自比特币诞生以来,区块链行业已发展十余年,而且在在金融.民生.司法存证.供应链协同.税务发票.版权保护等领域得到一定程度的应用,但大多属于边缘业务,以探索试点为主,应用深度和广度不足.为什么会这样?是 ...
- 如何用python自动编写《赤壁赋》word文档
目录 前言 安装-python-docx 一.自动编写<赤壁赋> 准备数据 新建文档 添加标题 添加作者 添加朝代 添加图片 添加段落 保存word文档 二.自动提取<赤壁赋> ...
- JDBC概念理解
##JDBC: 概念:Java DataBase Connectivity Java 数据库连接 Java语言操作数据库 JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则 ...
- 手把手教你Spring Boot整合Mybatis Plus 代码生成器
一.在pom.xml中添加所需依赖 <!-- MyBatis-Plus代码生成器--> <dependency> <groupId>com.baomidou< ...
- vue之下拉菜单Dropdown的使用
通过组件slot来设置下拉触发的元素以及需要通过具名slot为dropdown 来设置下拉菜单.默认情况下,下拉按钮只要hover即可,无需点击也会显示下拉菜单. <el-dropdown> ...
- tcp粘包情况分析
1 什么是粘包现象 TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾.在tcp长连接时,发送端发到buffer里面,接收端也有个buffe ...
- vscode中js文件使用typescript语法报错,如何解决
原因:由于vcode自身的语法检查有些问题 解决办法:在设置里面加上 "javascript.validate.enable": false 禁用默认的 js 验证 总结: 由于v ...
- Hi3559AV100外接UVC/MJPEG相机实时采图设计(二):V4L2接口的实现(以YUV422为例)
下面将给出Hi3559AV100外接UVC/MJPEG相机实时采图设计的整体流程,主要实现是通过V4L2接口将UVC/MJPEG相机采集的数据送入至MPP平台,经过VDEC.VPSS.VO最后通过HD ...