ElasticSearch索引的创建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch索引的创建相关的知识,希望对你有一定的参考价值。
参考技术A https://www.elastic.co/guide/en/elasticsearch/reference/7.2/indices-create-index.html最简单的创建一个索引的方法就是:
索引名称有以下限制:
需要注意,官方文档中描述, "setting" 内部实际上还有一层 "index" 正常情况下是省略的,实际上,在kibana的dev tools里面的默认提示是不提示有"index"这个选择的。不过,如果手动输入的话,实际上也是能够执行成功的。
在创建时,可以设定默认的分片数和备份数,这里分片数据设置为2,备份数设置为1,由于我后台设置的是一个三节点集群,因此现在集群是可以创建成功的。
查看节点的分布:
索引的分片数一旦指定就不能更改。虽然索引提供了 shrink 和 split API提供修改分片的能力,但是这种能力实际上也是创建了一个新的索引替换了原有的索引。
这里,我把 dynamic 打开,这样没有预习定义的属性也可以插入进来。事实上,这个参数默认就是 true 。
在创建索引时,可以增加下面这一段,为索引设置别名。
另外,如果索引已经存在,同样也可以给其加上索引。
索引的操作包括 add 和 delete ,可以给一个索引添加别名或者将一个索引的别名去除。
另外,索引还支持 filter 操作,其作用相当于是给索引制作了一个视图,对查询的结果做过滤。比如上面,我给alias_aaa设置了过滤条件。早做搜索时,只会呈现 cpu=intel 的结果。
此外,别名设置是也可以设置 routing 值,并且可以分别为搜索和索引设置。
最后,别名提供了设置 is_write_index 的功能,其作用在于,当别名执行不止一个索引的情况下,发生写操作时决定向哪个索引写入。
这一能力再索引生命周期管理模块中有重要的作用。参考: https://www.jianshu.com/p/9f7f39efeda3
使用索引生命周期管理模块时,可以在 hot 阶段做rotate,这时候需要指定,这一系列索引中,需要往哪个索引中写。
当一个别名执行多个索引,并且没有设定写指针时,写入操作会失败:
索引创建后,其部分属性是可以修改的。
可以通过将相关值设为null的方法恢复设置的默认值。
我们成功地创建了索引。
Elasticsearch- elasticsearch索引的创建查询和删除
文章目录
启动Elasticsearch
进入bin目录,双击elasticsearch.bat运行。
Elasticsearch启动后会暴露两个端口:
- 9300 端口为 Elasticsearch 集群间组件的通信端口
- 9200 端口为浏览器访问的 http协议 RESTful 端口。
索引操作
Postman
Postman是一个接口测试工具。
在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果, 从而验证响应中的结果数据是否和预期值相匹配;并确保开发人员能够及时处理接口中的bug,进而保证产品上线之后的稳定性和安全性。
它主要是用来模拟各种HTTP请求的(如:get/post/delete/put…等等),Postman与浏览器的区别在于有的浏览器不能输出Json格式,而Postman更直观接口返回的结果。
创建索引
在Elasticsearch中创建索引就相当于在关系型数据库中创建数据库。
进入postman中,向Elasticsearch服务器发送PUT请求,即创建一个索引。例如:
向ES服务器发送 PUT请求:localhost:9200/new_index
得到响应结果:
"acknowledged": true,
"shards_acknowledged": true,
"index": "new_index"
PUT请求:localhost:9200/new_index
,表示在Elasticsearch中创建一个名为“new_index”。
注意1:Elasticsearch中的索引不能使用大写字母
如果使用了大写字母就会得到如下的错误响应信息:
"error":
"root_cause": [
"type": "invalid_index_name_exception",
"reason": "Invalid index name [new_indeX], must be lowercase",
"index_uuid": "_na_",
"index": "new_indeX"
],
"type": "invalid_index_name_exception",
"reason": "Invalid index name [new_indeX], must be lowercase",
"index_uuid": "_na_",
"index": "new_indeX"
,
"status": 400
注意2:Elasticsearch中不能重复发送相同的PUT请求,即不能重复创建相同索引。
如果重复创建相同索引就会得到如下的错误响应信息:
"error":
"root_cause": [
"type": "resource_already_exists_exception",
"reason": "index [new_index/U_T66D1VSg-o0wrWxVgKSw] already exists",
"index_uuid": "U_T66D1VSg-o0wrWxVgKSw",
"index": "new_index"
],
"type": "resource_already_exists_exception",
"reason": "index [new_index/U_T66D1VSg-o0wrWxVgKSw] already exists",
"index_uuid": "U_T66D1VSg-o0wrWxVgKSw",
"index": "new_index"
,
"status": 400
查询索引信息
1. 查询指定索引信息
向ES服务器发送 GET请求:localhost:9200/new_index
。表示查询名为“new_index”的索引信息,将返回响应结果:
"new_index":
"aliases": ,
"mappings": ,
"settings":
"index":
"creation_date": "1653894682108",
"number_of_shards": "1",
"number_of_replicas": "1",
"uuid": "U_T66D1VSg-o0wrWxVgKSw",
"version":
"created": "7080099"
,
"provided_name": "new_index"
2. 查询所有索引
向ES服务器发送 GET请求:localhost:9200/_cat/indices?v
即可查询ES服务中的所有索引。
其中_cat 表示查看, indices 表示索引,这就相当于MySQL中的show tables。
响应结果中表头的含义如下:
表头 | 含义 |
---|---|
health | 健康状态: green(集群完整)、 yellow(单点正常、集群不完整)、 red(单点不正常) |
status | 索引状态 |
index | 索引名 |
uuid | 索引编号 |
pri | 主分片数量 |
rep | 副本数量 |
docs.count | 可用文档数量 |
docs.deleted | 文档删除状态 |
store.size | 整体所占空间大小 |
pri.store.size | 主分片所占空间大小 |
删除索引
向ES服务器发送 DELETE请求:localhost:9200/new_index
,表示删除名为“new_index”的索引。
再次发送GET请求:localhost:9200/_cat/indices?v
,“new_index”索引已不存在,删除成功。
以上是关于ElasticSearch索引的创建的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch:在 Java 客户端应用中管理索引 - Elastic Stack 8.x