在Elasticsearch中的索引管理主要包括创建索引,删除索引,获取索引,判断索引是否存在,打开关闭索引接口。
创建索引
创建索引接口允许系统创建实例化索引,Elasticsearch支持创建多个索引,包括对多个索引的操作。
创建索引
curl -XPUT 'http://localhost:9200/twitter/'
curl -XPUT 'http://localhost:9200/twitter/' -d '
index :
number_of_shards : 3
number_of_replicas : 2'
number_of_shards 索引设置主分片的数量,默认是5,占用5个分片。
number_of_replicas 索引副本分片的数量,默认是1个。
上面第二个curl示例展示了创建一个‘twitter’的索引时使用YAML语法进行自定义设置。
在这个例子中,创建了一个拥有3个主分片的索引,每个分片有2个副本分片。
上面示例对应的JSON格式如下:
curl -XPUT 'http://localhost:9200/twitter/' -d '{
"settings" : {
"index" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
}
}'
或者简写成:
curl -XPUT 'http://localhost:9200/twitter/' -d '{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
}'
提示:没必要写全settings中的index选项。
映射:创建索引允许你设置一个或多个映射。
curl -XPOST localhost:9200/test -d '{
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"type1" : {
"properties" : {
"field1" : { "type" : "string", "index" : "not_analyzed" }
}
}
}
}'
删除索引
删除索引示例:
curl -XDELETE 'http://localhost:9200/twitter/'
上面的示例删除了名为twitter的索引。删除索引需要指定索引名称,别名或者通配符。
删除索引可以使用逗号分隔符,或者使用_all或*号删除全部索引。
注意:_all 或 * 删除全部索引时要谨慎操作。
为了防止误删除,可以设置config/elasticsearch.yml属性action.destructive_requires_name为true,禁止使用通配符或_all删除索引,必须使用名称或别名才能删除该索引。
获取索引
获取索引接口允许从一个或多个索引中获取信息。
curl -XGET 'http://localhost:9200/twitter/'
上面的示例获取名为twitter的索引。获取索引需要指定索引名称,别名或者通配符。
获取索引可以使用通配符获取多个索引,或者使用_all或*号获取全部索引。
返回结果过滤:
可以自定义返回结果的属性。
curl -XGET 'http://localhost:9200/twitter/_settings,_mappings'
上面示例只返回twitter索引的settings和mappings属性。
可配置的属性包括_settings, _mappings, _warmers and _aliases。
判断索引是否存在
如果只想检查索引存在的状态,而不需要获取内容,使用HEAD代替GET,返回内容不包括索引内容。
用来检查索引是否存在。如下:
curl -XHEAD -i 'http://localhost:9200/twitter'
HTTP状态码标识索引是否存在。索引存在返回200,不存在返回404。
打开关闭索引接口
打开/关闭索引接口允许关闭一个打开的索引或者打开一个已经关闭的索引。关闭的索引只能显示索引元数据信息,不能够进行读写操作。
打开/关闭索引的方式是/{索引名}/_close 或者/{索引名}/_open,完整示例如下:
curl -XPOST 'localhost:9200/my_index/_close'
curl -XPOST 'localhost:9200/my_index/_open'
可以同时打开或关闭多个索引。如果指向不存在的索引会抛出错误。可以使用配置ignore_unavailable=true,不显示异常。
使用_all打开或关闭全部索引,或者使用通配符表示全部(比如 *)
设置config/elasticsearch.yml属性action.destructive_requires_name为true,禁止使用通配符或者_all标识索引。
因为关闭的索引会继续占用磁盘空间而不能使用,所以关闭索引接口可能造成磁盘空间的浪费。
禁止使用关闭索引功能,可以设置settingscluster.indices.close.enable为false,默认是true。
赛克蓝德(secisland)后续会逐步对Elasticsearch的最新版本的各项功能进行分析,近请期待。也欢迎加入secisland公众号进行关注。