索引(Index)类似于MySQL里的数据库(database)或者表(table)概念。不同于MySQL需要提前建表,ES其实支持在插入数据的时候自动建立默认索引。当然,ES 也支持自定义索引的属性以及结构。
新建索引
在Kibana管理页面,我们可以通过REST APIs快速创建一个索引:
PUT /my-index-000001
也可以在创建时候指定索引的属性。比如:指定分片数为3,副本数为2(默认情况都是1),则有:
PUT /my-index-000001
{
"settings": {
"index": {
"number_of_shards": 3,
"number_of_replicas": 2
}
}
}
更多其他属性可以参考这里。
也可以在创建时候使用Mapping指定索引结构里的字段,例如:
PUT /test
{
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"field1": { "type": "text" }
}
}
}
更新索引
更新索引属性
创建好索引后,也可以更新该索引的属性(仅限动态属性):
PUT /my-index-000001/_settings
{
"index" : {
"number_of_replicas" : 2
}
}
更新mapping
也可以更新索引的映射信息,比如新增字段或者修改字段设置:
PUT /my-index-00000/_mapping
{
"properties": {
"title": { "type": "text"}
}
}
还可以为上边的title字段再增加一个内嵌字段subtitle:
PUT /my-index-00000/_mapping
{
"properties": {
"title": {
"properties": {
"subtitle": {
"type": "text"
}
}
}
}
}
注意,存量索引里的字段类型是不能修改的。因为修改字段类型会导致其与存量数据类型不匹配。你如果想修改字段类型,唯一办法是新建一个索引,然后使用reindex命令将存量数据导入新的索引中。
参考资料
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 duval1024@gmail.com