`

ElasticSearch入门- 设置分片副本数量及putMapping

阅读更多

在之前的 一篇文章 中,写到如何创建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的elasticsearch-analysis-ik分词器

    适用于7.17.1系列,例如Elasticsearch的7.17.12版本。 elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个...

    elasticsearch-analysis-pinyin-7.4.0 es拼音分词器7.4.0

    因此,理解并合理利用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-analysis-ik-8.7.0.zip

    elasticsearch-analysis-ik-7.10.0.zip下载

    在使用过程中,可以通过Elasticsearch的配置文件(如elasticsearch.yml)设置分词器参数,或者在创建索引时指定分词器类型。 总的来说,"elasticsearch-analysis-ik-7.10.0.zip"是Elasticsearch 7.10.0版的一个关键...

    elasticsearch-analysis-dynamic-synonym-7.2.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最新版elasticsearch-analysis-ik-8.8.2.zip

    最新版windows elasticsearch-8.1.1-windows-x86_64.zip

    - 为提高性能,建议配置足够大的堆内存,并合理分配分片和副本数量。 - 定期执行索引重建和优化,以更新分析器设置并整理碎片。 - 监控磁盘空间,避免空间不足导致的问题。 - 使用HTTPS进行通信,确保数据传输的...

    elasticsearch-analysis-ik-7.16.3.zip

    在现代大数据分析和搜索引擎领域,Elasticsearch(ES)因其高效、灵活的全文检索能力而备受青睐。然而,对于中文这样的多字节语言,如何准确地进行分词是关键。这时,我们就需要引入专门的中文分词器。本文将详细...

    elasticsearch-HQ-master.zip

    Elasticsearch-HQ是一款强大的Elasticsearch管理工具,尤其对于那些需要通过图形用户界面来监控、管理和查询Elasticsearch集群的用户来说,它是一个不可或缺的辅助插件。这个"elasticsearch-HQ-master.zip"文件包含...

    elasticsearch-analysis-pinyin-7.17.24

    elasticsearch-analysis-pinyin-7.17.24

    elasticsearch-analysis-ik-7.16.2.zip

    配置方面,用户可以在Elasticsearch的配置文件中指定分词器参数,如自定义词典路径,或者通过API动态调整设置。 总结,elasticsearch-analysis-ik-7.16.2作为Elasticsearch中的中文分词利器,结合其依赖库,为中文...

    elasticsearch-jieba-plugin 8.8.2.zip

    `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-analysis-ik-8.8.1.zip

    elasticsearch-analysis-ik-7.10.2.zip

    Elasticsearch(ES)作为一个开源的全文搜索引擎,因其强大的搜索功能和分布式特性而备受青睐。然而,对于中文这种复杂的语言,分词是搜索引擎理解文本的关键步骤。本文将详细介绍elasticsearch-analysis-ik-7.10.2...

    elasticsearch-analysis-ik-7.4.2.zip.7z

    《Elasticsearch中文分词插件:elasticsearch-analysis-ik-7.4.2》 在深入探讨Elasticsearch的中文分词插件elasticsearch-analysis-ik-7.4.2之前,首先需要理解Elasticsearch的基础知识。Elasticsearch是一款高性能...

    elasticsearch-analysis-ik-7.3.2.zip

    Elasticsearch(ES)作为一个强大的全文搜索引擎,其在处理中文文档时,对中文分词的准确性和效率有着至关重要的作用。"elasticsearch-analysis-ik"是ES中最受欢迎的中文分词器之一,专为提升中文文本分析性能而设计...

    elasticsearch-head-5.0.0.tar.gz

    6. **分片与副本**:可以查看每个索引的分片分布,包括主分片和副本分片的数量,便于理解数据在集群中的分布和可能的故障恢复策略。 7. **可视化监控**:通过图表展示集群的CPU、内存、网络流量等资源使用情况,有...

    elasticsearch-analysis-dynamic-synonym-7.6.2

    Elasticsearch(ES)作为一款强大的全文搜索引擎,同样支持对同义词的处理。`elasticsearch-analysis-dynamic-synonym-7.6.2`是一个专为ES7.6.2版本设计的动态同义词插件,旨在实现同义词的动态加载和管理,使得同义...

    elasticsearch-analysis-ik-7.12.1

    **Elasticsearch 分析插件 IK Analysis** **一、IK Analysis 概述** IK Analysis(全称:Intelligent Chinese Analysis)是针对 Elasticsearch 的一个强大且成熟的中文分词插件,专为处理中文文本分析而设计。它...

    elasticsearch-analysis-ik 7.10.0 分词器

    **Elasticsearch Analysis IK 7.10.0 分词器详解** Elasticsearch 分词器是搜索引擎核心组件之一,负责将输入的文本拆分成可搜索的独立单元——词语。在中文环境中,这个过程尤为重要,因为中文句子由多个汉字组成...

Global site tag (gtag.js) - Google Analytics