下面是关于elasticsearch索引的创建过程的完整攻略:
1. 创建 index
Elasticsearch 索引的创建过程主要分为三个步骤:创建 index、配置 index、预热 index。其中,第一个步骤是最基础也最重要的步骤,我们可以通过以下REST API 请求来创建索引:
PUT /my-index
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
},
"mappings": {
"properties": {
"title": {
"type": "text"
},
"body": {
"type": "text"
}
}
}
}
上述请求中,我们创建了一个名为 my-index
的索引,设置了 1 个分片和 0 个副本。在 mappings 中定义了两个字段 title
和 body
,它们的类型都是 text
。另外,我们也可以不设置 mappings,这时 Elasticsearch 会自动根据文档中的属性进行推导。
2. 配置 index
索引创建完成后,我们需要根据实际需求进行一些配置。这里介绍两个常用的配置项:
2.1 分片和副本
在步骤一中,我们已经设置了索引的分片和副本数量。这里再详细讲解一下:
分片是 Elasticsearch 对数据的水平切分,可以将数据分散到多台机器上进行存储和检索。当一个索引太大,无法存储在单个节点上时,我们需要将它分散到多个节点上。分片的数量不能太小,也不能太大,最好根据数据量和硬件条件进行调整。
副本是 Elasticsearch 对数据的备份,它可以提供高可用和负载均衡。当某个节点宕机或网络不通时,其他节点可以接管并继续提供服务;当查询请求过多时,副本可以分摊负载。副本数量也不能太少,也不能太多,最好考虑性能和容错性的平衡。
可以通过以下 API 修改分片和副本数:
PUT /my-index/_settings
{
"number_of_replicas": 1
}
上述请求将 my-index
的副本数改为 1。
2.2 索引别名
索引别名是 Elasticsearch 对索引的引用,它可以隐藏底层的真实索引名称,并提供如下功能:
- 可以在不改变索引名称的情况下修改索引配置;
- 可以通过别名来进行搜索;
- 可以将多个索引合并成一个虚拟索引。
可以通过以下 API 创建索引别名:
POST /_aliases
{
"actions": [
{
"add": {
"index": "my-index",
"alias": "my-alias"
}
}
]
}
上述请求将 my-index
的别名改为 my-alias
。
3. 预热 index
索引创建完成后,我们需要等待 Elasticsearch 将数据加载到内存中,进行一定的预热操作。这个过程可能会花费一些时间,具体时间也取决于数据量和硬件环境。可以通过以下 API 查看索引状态:
GET /my-index/_stats
上述请求返回的响应中,有一个字段叫 primaries
,它包含了主分片的一些统计信息,如存储空间、文档数、分词器等等。
示例说明
为了更好的理解上述过程,下面举两个具体的示例说明:
- 创建一个名为
goods
的索引,包含 2 个分片和 1 个副本,定义了一个属性title
和一个属性tags
。
PUT /goods
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"title": {
"type": "text"
},
"tags": {
"type": "keyword"
}
}
}
}
- 修改名为
students
的索引的副本数为 2。
PUT /students/_settings
{
"number_of_replicas": 2
}
以上就是关于 Elasticsearch 索引创建过程的详细说明,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:elasticsearch索引的创建过程index create逻辑分析 - Python技术站