在之前的 一篇文章 中,写到如何创建mapping。里面只是简单的创建了一个mapping。其实,这种比较重要并且一旦建立无法修改的操作还是需要仔细规划的。
今天我介绍设置index的分片数量及副本数量,即创建索引的如何指定分片的个数及副本的个数。分片的个数在创建之后是 无法再增加和减少 的,除非你另外建一个索引库,而 副本是可以在运行的时候,动态增加和减少 。因此,在创建索引库时,规划好分片(Shard)是非常重要的。
1、如何在创建index时,指定分片的个数?
其实代码也很简单。
Settings settings = ImmutableSettings.settingsBuilder() //5个主分片 .put("number_of_shards", 5) //测试环境,减少副本提高速度 .put("number_of_replicas", 0).build();
在非生产环境,这个副本最好设置成0,即不保留副本,因为每增加一个副本,写数据的成本就增加一倍。本来elasticsearch写的速度就比较慢。
2、如果在创建Index时,顺便把type的mapping也创建?
//首先创建索引库 CreateIndexResponse indexresponse = client.admin().indices() //这个索引库的名称还必须不包含大写字母 .prepareCreate("testindex").setSettings(settings) //这里直接添加type的mapping .addMapping("testType", getMapping())
有几个type就addMapping几个。
综合起来的代码:
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; import org.elasticsearch.client.Client; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import com.donlianli.es.ESUtils; /** * 创建索引时,指定分片及副本 * 并且创建type一起执行 * @author donlianli@126.com */ public class PutMappingTest { public static void main(String[] argv) throws Exception{ Client client = ESUtils.getClient(); Settings settings = ImmutableSettings.settingsBuilder() //5个主分片 .put("number_of_shards", 5) //测试环境,减少副本提高速度 .put("number_of_replicas", 0).build(); //首先创建索引库 CreateIndexResponse indexresponse = client.admin().indices() //这个索引库的名称还必须不包含大写字母 .prepareCreate("testindex").setSettings(settings) //这里直接添加type的mapping .addMapping("testType", getMapping()) .execute().actionGet(); System.out.println(indexresponse.acknowledged()); } /** * mapping 一旦定义,之后就不能修改。 * @return * @throws Exception */ private static XContentBuilder getMapping() throws Exception{ XContentBuilder mapping = jsonBuilder() .startObject() .startObject("test") .startObject("properties") .startObject("id") .field("type", "long") .field("store", "yes") .endObject() .startObject("type") .field("type", "string") .field("index", "not_analyzed") .endObject() .startObject("catIds") .field("type", "integer") .endObject() .endObject() .endObject() .endObject(); return mapping; } }
3、如果修改副本的数量?
import org.elasticsearch.action.admin.indices.settings.UpdateSettingsResponse; import org.elasticsearch.client.Client; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.settings.Settings; import com.donlianli.es.ESUtils; /** * 更新副本个数 * @author donlianli@126.com */ public class UpdateReplicaTest { public static void main(String[] argv) throws Exception{ Client client = ESUtils.getClient(); Settings settings = ImmutableSettings.settingsBuilder() //可以更新的配置还有很多,见elasticsearch官网 .put("number_of_replicas", 2).build(); //首先创建索引库 UpdateSettingsResponse updateSettingsResponse = client.admin().indices() .prepareUpdateSettings("testindex").setSettings(settings).execute().actionGet(); System.out.println(updateSettingsResponse); } }
对这类话题感兴趣?欢迎发送邮件至 donlianli@126.com
相关推荐
适用于7.17.1系列,例如Elasticsearch的7.17.12版本。 elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个...
因此,理解并合理利用Elasticsearch的索引策略、分片和副本设置,以及查询优化技术,对于提升整体性能至关重要。 总的来说,elasticsearch-analysis-pinyin-7.4.0为Elasticsearch带来了强大的中文拼音分词功能,极...
最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip
在使用过程中,可以通过Elasticsearch的配置文件(如elasticsearch.yml)设置分词器参数,或者在创建索引时指定分词器类型。 总的来说,"elasticsearch-analysis-ik-7.10.0.zip"是Elasticsearch 7.10.0版的一个关键...
Elasticsearch(ES)是一款功能强大的全文搜索引擎,广泛应用于数据检索、数据分析等领域。为了提高搜索的准确性和便利性,Elasticsearch提供了丰富的分析插件,其中"elasticsearch-analysis-dynamic-synonym-7.2.0...
最新版elasticsearch-analysis-ik-8.8.2.zip最新版elasticsearch-analysis-ik-8.8.2.zip最新版elasticsearch-analysis-ik-8.8.2.zip最新版elasticsearch-analysis-ik-8.8.2.zip
- 为提高性能,建议配置足够大的堆内存,并合理分配分片和副本数量。 - 定期执行索引重建和优化,以更新分析器设置并整理碎片。 - 监控磁盘空间,避免空间不足导致的问题。 - 使用HTTPS进行通信,确保数据传输的...
在现代大数据分析和搜索引擎领域,Elasticsearch(ES)因其高效、灵活的全文检索能力而备受青睐。然而,对于中文这样的多字节语言,如何准确地进行分词是关键。这时,我们就需要引入专门的中文分词器。本文将详细...
Elasticsearch-HQ是一款强大的Elasticsearch管理工具,尤其对于那些需要通过图形用户界面来监控、管理和查询Elasticsearch集群的用户来说,它是一个不可或缺的辅助插件。这个"elasticsearch-HQ-master.zip"文件包含...
elasticsearch-analysis-pinyin-7.17.24
配置方面,用户可以在Elasticsearch的配置文件中指定分词器参数,如自定义词典路径,或者通过API动态调整设置。 总结,elasticsearch-analysis-ik-7.16.2作为Elasticsearch中的中文分词利器,结合其依赖库,为中文...
`elasticsearch-jieba-plugin`正是将jieba分词库与Elasticsearch进行了深度融合,使得ES在处理中文文本时能展现出卓越的性能。 安装此插件的过程简单明了。首先,下载`elasticsearch-jieba-plugin 8.8.2.zip`压缩包...
最新版elasticsearch-analysis-ik-8.8.1.zip最新版elasticsearch-analysis-ik-8.8.1.zip最新版elasticsearch-analysis-ik-8.8.1.zip最新版elasticsearch-analysis-ik-8.8.1.zip
Elasticsearch(ES)作为一个开源的全文搜索引擎,因其强大的搜索功能和分布式特性而备受青睐。然而,对于中文这种复杂的语言,分词是搜索引擎理解文本的关键步骤。本文将详细介绍elasticsearch-analysis-ik-7.10.2...
《Elasticsearch中文分词插件:elasticsearch-analysis-ik-7.4.2》 在深入探讨Elasticsearch的中文分词插件elasticsearch-analysis-ik-7.4.2之前,首先需要理解Elasticsearch的基础知识。Elasticsearch是一款高性能...
Elasticsearch(ES)作为一个强大的全文搜索引擎,其在处理中文文档时,对中文分词的准确性和效率有着至关重要的作用。"elasticsearch-analysis-ik"是ES中最受欢迎的中文分词器之一,专为提升中文文本分析性能而设计...
6. **分片与副本**:可以查看每个索引的分片分布,包括主分片和副本分片的数量,便于理解数据在集群中的分布和可能的故障恢复策略。 7. **可视化监控**:通过图表展示集群的CPU、内存、网络流量等资源使用情况,有...
Elasticsearch(ES)作为一款强大的全文搜索引擎,同样支持对同义词的处理。`elasticsearch-analysis-dynamic-synonym-7.6.2`是一个专为ES7.6.2版本设计的动态同义词插件,旨在实现同义词的动态加载和管理,使得同义...
**Elasticsearch 分析插件 IK Analysis** **一、IK Analysis 概述** IK Analysis(全称:Intelligent Chinese Analysis)是针对 Elasticsearch 的一个强大且成熟的中文分词插件,专为处理中文文本分析而设计。它...
**Elasticsearch Analysis IK 7.10.0 分词器详解** Elasticsearch 分词器是搜索引擎核心组件之一,负责将输入的文本拆分成可搜索的独立单元——词语。在中文环境中,这个过程尤为重要,因为中文句子由多个汉字组成...