1.创建索引
语句
可选参数
- aliases:相当于对索引做了第二层封装。可以通过指定别名的方式,在重建索引时,重置别名指向新的索引,进而实现对应用程序而言无缝切换。对于客户端来说是无感知的
- mappings:对文档中字段的描述,类似于关系型数据库中的schema
settings:对于索引的设置,包括分片数,副本数,分词器,refresh时间频率等相关设置
aliases
别名,可以理解为对于索引的概念进行了一个上层封装。一个别名可以对应多个索引,一个索引也可以对应多个别名。
别名的使用通常在于,客户端使用别名来对索引进行查询,当重建索引时,只需要将别名指向新的索引即可。对于客户端来说,没有做任何变更即可对新索引进行查询
需要注意的是,别名与索引不可同名,且按照规范,最好是索引名称的子集。例如索引名称:student_1,别名:student添加索引别名
一个别名适配一个索引
POST _aliases
{
"actions":[
{
"add":{
"index":"indexName",
"alias":"aliasName"
}
}
]
}
一个别名适配多个索引
POST _aliases
{
"actions":[
{
"add":{
"indices":[
"indexName1",
"indexName2"
],
"alias":"aliasName"
}
}
]
}
一个索引添加多个别名
POST _aliases
{
"actions":[
{
"add":{
"index":"indexName",
"aliases":[
"aliasName1",
"aliasName2"
]
}
}
]
}
查询索引别名
删除索引别名
一个别名适配一个索引
POST _aliases
{
"actions":[
{
"remove":{
"index":"indexName",
"alias":"aliasName"
}
}
]
}
一个别名适配多个索引
POST _aliases
{
"actions":[
{
"remove":{
"indices":[
"indexName1",
"indexName2"
],
"alias":"aliasName"
}
}
]
}
一个索引添加多个别名
POST _aliases
{
"actions":[
{
"remove":{
"index":"indexName",
"aliases":[
"aliasName1",
"aliasName2"
]
}
}
]
}
修改索引别名
其实就是将删除和新增两个动作结合
一个别名适配一个索引
POST _aliases
{
"actions":[
{
"remove":{
"index":"indexName",
"alias":"aliasName"
}
},
{
"add":{
"index":"newIndexName",
"alias":"newAliasName"
}
}
]
}
一个别名适配多个索引
POST _aliases
{
"actions":[
{
"remove":{
"indices":[
"indexName1",
"indexName2"
],
"alias":"aliasName"
}
},
{
"add":{
"indices":[
"newIndexName1",
"newIndexName2"
],
"alias":"newAliasName"
}
}
]
}
一个索引添加多个别名
POST _aliases
{
"actions":[
{
"remove":{
"index":"indexName",
"aliases":[
"aliasName1",
"aliasName2"
]
}
},
{
"add":{
"index":"newIndexName",
"aliases":[
"newAliasName1",
"newAliasName2"
]
}
}
]
}
mapping
settings
setting属性用于设置当前索引的分片数,副本数等信息
常用项包括:index.number_of_shards:索引分片数
- index.number_of_replicas:索引副本数
- index.refresh_interval:refresh频率,默认1s。当数据对实时刷新要求不那么高时,可以适当调大改值。当值=-1时,代表不会进行refresh操作,但是请保证es的虚拟机内存足够大,不然会造成内存溢出
常见创建如下:
PUT student-2
{
"settings":{
"index":{
"number_of_shards":3,
"number_of_replicas":1,
"refresh_interval":"3s"
}
}
}
完整创建索引示例
PUT student-2
{
"aliases":{
"student":{
}
},
"mappings":{
"properties":{
"age":{
"type":"long"
},
"name":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
},
"settings":{
"index":{
"refresh_interval":"3s",
"number_of_shards":"3",
"number_of_replicas":"1"
}
}
}
2.查询索引
查询当前集群全部索引
查询单个索引
查询单个索引的部分字段
按照restful形式,需要在/indexName后再追加对应属性的_路由即可
示例:
- 只查询mappping:GET /{indexName}/_mapping
- 只查询settings:GET /${indexName}/_settings
3.修改索引
es基于lucene,而lucene中的每个segment都具有不变性。因此每个Index一旦创建完成就不可修改。可以通过建立新索引,旧数据迁移到新索引的形式更新索引