Elasticsearch索引创建指南
Elasticsearch是一款基于Lucene构建的开源搜索引擎,它提供了分布式多用户能力的全文搜索引擎,并支持RESTful操作,本文将详细介绍如何在Elasticsearch中创建索引,包括基本概念、操作方法以及常见问题解答。
一、什么是索引?
在Elasticsearch中,索引是一个逻辑概念,用于存储文档(类似于关系数据库中的表),每个索引由一个或多个分片组成,每个分片又有一个副本,以提高数据的可用性和容错性。
二、索引命名规范
小写字母命名:索引名称应以小写英文字母命名。
避免驼峰命名法:不要使用驼峰命名法。
单词间用下划线分隔:如果索引名称包含多个单词,应使用全小写加下划线的方式,如test_index
。
三、创建索引
1、使用PUT命令创建索引:
PUT /索引名称
创建一个名为es_db
的索引:
PUT /es_db
2、查询索引:
GET /索引名称
查询名为es_db
的索引:
GET /es_db
3、删除索引:
DELETE /索引名称
删除名为es_db
的索引:
DELETE /es_db
4、设置Settings:
在创建索引时,可以指定一些设置,如分片数和副本数,这些设置只能在创建索引时或在关闭状态的索引上进行修改。
PUT /索引名称 { "settings": { "number_of_shards": 3, "number_of_replicas": 2 } }
创建一个名为es_db
的索引,并设置其主分片数量为3,每个主分片的副本数量为2:
PUT /es_db { "settings": { "number_of_shards": 3, "number_of_replicas": 2 } }
四、创建映射(Mapping)
映射定义了索引中的字段类型、分析器等信息,可以在创建索引时直接指定映射,也可以在索引创建后单独更新映射,但需要注意的是,Elasticsearch不允许对已存在字段的类型进行修改(除了某些特殊情况)。
1、直接在创建索引时指定映射:
PUT /索引名称 { "mappings": { "properties": { "title": { "type": "text" }, "price": { "type": "double" }, "published_date": { "type": "date" } } } }
创建一个名为my_index
的索引,并定义三个字段:title
(类型为text)、price
(类型为double)和published_date
(类型为date):
PUT /my_index { "mappings": { "properties": { "title": { "type": "text" }, "price": { "type": "double" }, "published_date": { "type": "date" } } } }
2、单独更新映射:
如果索引已经创建,也可以单独更新映射,但需要注意的是,Elasticsearch不允许对已存在字段的类型进行修改(除了某些特殊情况)。
PUT /索引名称/_mapping { "properties": { "new_field": { "type": "keyword" } } }
向已经存在的my_index
索引中添加一个新的字段new_field
,类型为keyword:
PUT /my_index/_mapping { "properties": { "new_field": { "type": "keyword" } } }
五、实战演示
假设我们要创建一个商品索引,并指定分片数和副本数,同时定义商品的映射,我们可以使用以下CURL命令来实现:
curl -X PUT "localhost:9200/commodity?pretty" -H 'Content-Type: application/json' -d' { "settings": { "number_of_shards": 3, "number_of_replicas": 2 }, "mappings": { "properties": { "commodity_id": { "type": "long" }, "commodity_name": { "type": "text" }, "picture_url": { "type": "keyword" }, "price": { "type": "double" } } } }'
执行上述命令后,如果成功,将返回以下结果:
{ "acknowledged" : true, "shards_acknowledged" : true, "index" : "commodity" }
这表明索引commodity
已经成功创建,并且具有指定的分片数和副本数,以及定义的映射。
六、FAQs
1、Q: 如何修改已有索引的副本数?
A: 你可以使用以下API来修改已有索引的副本数:
PUT /索引名称/_settings { "number_of_replicas": 新的副本数 }
将commodity
索引的副本数更新为3:
PUT /commodity/_settings { "number_of_replicas": 3 }
2、Q: 如何在创建索引时加入别名定义?
A: 你可以在创建索引时通过aliases
字段来定义别名。
PUT /索引名称 { "aliases": { "alias_1": {}, "alias_2": { "filter": { "term": { "user": "kimchy" } }, "routing": "kimchy" } } }
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1256218.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复