云服务器内容精选

  • 前提条件 目的端集群(Es-2)和源端集群(Es-1)处于可用状态。建议在业务空闲期进行集群迁移。 确认目的端集群(Es-2)和源端集群(Es-1)在同一个Region下。 确认目的端集群(Es-2)的版本大于等于源端集群(Es-1)的版本。 确认目的端集群(Es-2)的节点数大于源端集群(Es-1)的节点数的一半。 确认目的端集群(Es-2)的节点数大于等于源端集群(Es-1)的shard副本数。 确认目的端集群(Es-2)的CPU、MEM和Disk配置大于等于源端集群(Es-1)。
  • 通过内网域名或节点IP访问集群 获取内网域名或者节点IP。 登录云搜索服务控制台,进入集群列表,单击集群名称,进入集群“基本信息”页面,选择“终端节点服务”,查看内网域名。 图3 查看节点IP和内网域名信息 在弹性云服务器中,直接通过curl执行API或者开发程序调用API并执行程序即可使用集群。Elasticsearch操作和接口请参见《Elasticsearch:权威指南》。 弹性云服务器需要满足如下要求: 为弹性云服务分配足够的磁盘空间。 此弹性云服务器的VPC需要与集群在同一个VPC中,开通终端节点服务后,可以实现跨VPC访问。 此弹性云服务器的安全组需要和集群的安全组相同。 如果不同,请修改弹性云服务器安全组或配置弹性云服务器安全组的出入规则允许集群所有安全组的访问。修改操作请参见配置安全组规则。 待接入的CSS集群,其安全组的出方向和入方向需允许TCP协议及9200端口,或者允许端口范围包含9200端口。 例如,使用curl执行如下命令,查看集群中的索引信息,集群中的内网访问地址为“vpcep-7439f7f6-2c66-47d4-b5f3-790db4204b8d.region01.huaweicloud.com”,端口为“9200”。 如果接入集群未启用安全模式,接入方式为: curl 'http://vpcep-7439f7f6-2c66-47d4-b5f3-790db4204b8d.region01.huaweicloud.com:9200/_cat/indices' 如果接入集群已启用安全模式,则需要使用https方式访问,并附加用户名和密码,在curl命令中添加-u选项。 curl -u username:password -k 'https://vpcep-7439f7f6-2c66-47d4-b5f3-790db4204b8d.region01.huaweicloud.com:9200/_cat/indices'
  • 已有集群终端节点服务管理 如果创建集群时未开启终端节点服务,集群创建成功后,可以通过如下步骤进行开启。 登录云搜索服务管理控制台。 在集群管理页面,单击需要开启终端节点服务的集群名称,进入集群基本信息页面。 选择“终端节点服务”,在“终端节点服务”右侧单击开关,打开集群的终端节点服务功能。 在弹出的提示框中,您可以根据需求,选择是否创建内网域名。单击“是”,开启终端节点服务。 开启终端节点服务后,您可以通过终端节点产生的“内网域名”或者“节点IP”访问此集群。详细请参考通过内网域名或节点IP访问集群。 关闭终端节点服务功能后,所有的用户将不能通过内网域名访问此集群。 (可选)打开终端节点服务后,您可以单击“终端节点服务白名单”后面的“修改”,更新已有的白名单。 管理终端节点。 在终端节点服务页面下,显示所有连接当前终端节点服务的终端节点。 图2 管理终端节点 单击操作列的“接受”或者“拒绝”可以修改节点的“状态”。如果对某个终端节点“拒绝”操作之后,其生成的内网域名将不能再访问到当前集群。
  • 创建集群时开启终端节点服务 登录云搜索服务管理控制台。 在右上方单击“创建集群”。 在创建集群页面,“高级配置”选择“自定义”后,开启终端节点服务。 图1 开启终端节点服务 “创建内网域名”:如果开启,系统将会自动为用户创建一个内网域名,可以通过内网域名访问集群。 “终端节点服务白名单”:您可以在“终端节点服务白名单”中添加需要授权的账号ID,只要其账号ID被添加到终端节点服务白名单中,就可以通过内网域名或者节点IP访问集群。 单击“添加”可以添加多个账号。 单击“操作”列的“删除”,可以删除不允许访问的账号。 授权账号ID配置成*,则表示允许全部用户访问该集群。 需要授权的账号ID可在“我的凭证”中进行查看。 集群开启终端节点服务之后,终端节点将按需进行收费,终端节点的费用将由用户进行支付,详细的计费方式请参考终端节点计费说明。
  • 示例指导 登录云搜索服务管理控制台。 在左侧导航栏中,选择“集群管理”,进入集群列表页面。 在集群列表中,单击需要使用的集群对应“操作”列的“Kibana”。 如果开启了安全模式,需要输入创建集群时设置的管理员账户名和密码。 在Kibana的左侧导航中选择“Dev Tools”,进入Console界面。 在Console界面,执行如下命令,创建索引“stconvert”,并指定自定义映射来定义数据类型。 低于7.x版本 PUT /stconvert { "settings": { "number_of_shards": 1, "number_of_replicas": 0, "analysis": { "analyzer": { "ts_ik": { "tokenizer": "ik_smart", "char_filter": [ "tsconvert", "stconvert" ] } }, "char_filter": { "tsconvert": { "type": "stconvert", "convert_type": "t2s" }, "stconvert": { "type": "stconvert", "convert_type": "s2t" } } } }, "mappings": { "type": { "properties": { "desc": { "type": "text", "analyzer": "ts_ik" } } } } } 7.x版本及高于7.x版本 PUT /stconvert { "settings": { "number_of_shards": 1, "number_of_replicas": 0, "analysis": { "analyzer": { "ts_ik": { "tokenizer": "ik_smart", "char_filter": [ "tsconvert", "stconvert" ] } }, "char_filter": { "tsconvert": { "type": "stconvert", "convert_type": "t2s" }, "stconvert": { "type": "stconvert", "convert_type": "s2t" } } } }, "mappings": { "properties": { "desc": { "type": "text", "analyzer": "ts_ik" } } } } 返回结果如下所示。 { "acknowledged" : true, "shards_acknowledged" : true, "index" : "stconvert" } 在Console界面,执行如下命令,导入数据到“stconvert”索引中。 低于7.x版本 POST /stconvert/type/1 { "desc": "國際電視臺" } 7.x版本及高于7.x版本 POST /stconvert/_doc/1 { "desc": "國際電視臺" } 当返回结果信息中“failed”字段的值为“0”时,表示数据导入成功。 在Console界面,执行如下命令,搜索关键字“国际”,并查看搜索结果。 GET /stconvert/_search { "query": { "match": { "desc": "国际" } } } 搜索结果如下所示。 { "took" : 15, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 0.5753642, "hits" : [ { "_index" : "stconvert", "_type" : "type", "_id" : "1", "_score" : 0.5753642, "_source" : { "desc" : "國際電視臺" } } ] } }
  • 操作步骤 登录Elasticsearch所在的第三方友商云,创建一个支持s3协议的共享存储仓库,例如登录阿里云的进入OSS服务创建目录patent-esbak, 或者登录腾讯云进入COS服务创建目录patent-esbak。 在自建或第三方友商Elasticsearch中创建快照备份仓库,用于存放ES快照数据。 例如,在Elasticsearch中创建一个“my_backup”的备份仓库,关联到存储仓库OSS。 PUT _snapshot/my_backup { # 存储仓库类型。 "type": "oss", "settings": { # 步骤1中存储仓库的内网访问域名。 "endpoint": "http://oss-xxx.xxx.com", # 存储仓库的用户ID和密码。认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密, 确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ak和sk。 "access_key_id": "ak", "secret_access_key": "sk", # 步骤1创建的存储仓库的bucket名称。 "bucket": "patent-esbak", # 是否打开快照文件的压缩功能。 "compress": false, # 配置此参数可以限制快照数据的分块大小。当上传的快照数据超过这个数值,数据就会被分块上传到存储仓库中。 "chunk_size": "1g", # 仓库的起始位置,默认是根目录。 "base_path": "snapshot/" } } 为自建或第三方友商Elasticsearch创建快照。 为所有索引创建快照 例如,创建一个名为“snapshot_1”的快照。 PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true 为指定索引创建快照 例如,创建一个名为“snapshot_test”的快照,该快照包含索引“patent_analyse”和“patent”。 PUT _snapshot/my_backup/snapshot_test { "indices": "patent_analyse,patent" } 查看集群的快照创建进度。 执行如下命令可以查看所有快照信息: GET _snapshot/my_backup/_all 执行如下命令可以查看指定快照“snapshot_1”的信息: GET _snapshot/my_backup/snapshot_1 将快照数据从存储仓库迁移到对象存储服务OBS中。 对象存储迁移服务(OMS)支持多种云服务商数据迁移到对象存储服务OBS中,具体请参见各云服务商迁移教程。 在CSS服务的Elasticsearch集群中创建一个存储仓库关联到OBS,用于恢复自建或第三方友商Elasticsearch的快照数据。 例如,在集群中创建一个“my_backup_all”的存储仓库,关联上一步数据迁移目的端的OBS。 PUT _snapshot/my_backup_all/ { "type" : "obs", "settings" : { # OBS的内网访问域名。 "endpoint" : "obs.xxx.xxx.com", "region" : "xxx", # 访问OBS的用户名和密码。认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险, 建议在配置文件或者环境变量中密文存放, 使用时解密, 确保安全;本示例以ak和sk保存在环境变量中为例, 运行本示例前请先在本地环境中设置环境变量ak和sk。 "access_key": "ak", "secret_key": "sk", # OBS的桶名称,和上一步迁移目的端的OBS桶名保持一致。 "bucket" : "esbak", "compress" : "false", "chunk_size" : "1g", # 注意“snapshot”后面没有/。 "base_path" : "snapshot", "max_restore_bytes_per_sec": "100mb", "max_snapshot_bytes_per_sec": "100mb" } } 在CSS服务的Elasticsearch集群中恢复快照数据。 查看所有快照信息。 GET _snapshot 恢复快照。 恢复某一快照的所有索引。例如恢复名为“snapshot_1”的快照的所有索引数据。 POST _snapshot/my_backup_all/snapshot_1/_restore?wait_for_completion=true 恢复某一快照的部分索引。例如名为“snapshot_1”的快照中只恢复非“.”开头的索引。 POST _snapshot/my_backup/snapshot_1/_restore {"indices":"*,-.monitoring*,-.security*,-.kibana*","ignore_unavailable":"true"} 恢复某一快照中的指定索引,并重命名。例如在名为“snapshot_1”的快照中,将索引“index_1”恢复为“restored_index_1”,“index_2”恢复为“restored_index_2”。 POST /_snapshot/my_backup/snapshot_1/_restore { # 只恢复索引“index_1”和“index_2”,忽略快照中的其他索引。 "indices": "index_1,index_2" # 查找正在恢复的索引,该索引名称需要与提供的模板匹配。 "rename_pattern": "index_(.+)", # 重命名查找到的索引。 "rename_replacement": "restored_index_$1" } 查看快照恢复结果。 查看所有快照的恢复结果: GET /_recovery/ 查看指定索引的快照恢复结果: GET {index_name}/_recovery GET {index_name}/_recovery
  • 准备工作 创建迁移虚拟机。 创建迁移虚拟机,用于迁移源集群的元数据。 创建ECS虚拟机,虚拟机需要创建linux系统,规格选择2U4G。 测试虚拟机和源集群和目标集群保持连通性,执行命令curl http://{ip}:{port}可以测试结果。 IP是源集群和目的集群访问地址,端口默认是9200,如果不是9200使用集群实际端口。 如下示例仅适用于非安全集群。 curl http://10.234.73.128:9200 { "name" : "voc_es_cluster_new-ess-esn-1-1", "cluster_name" : "voc_es_cluster_new", "cluster_uuid" : "1VbP7-39QNOx_R-llXKKtA", "version" : { "number" : "6.5.4", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "d2ef93d", "build_date" : "2018-12-17T21:17:40.758843Z", "build_snapshot" : false, "lucene_version" : "7.5.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "Tagline" : "You Know, for Search" }
  • 步骤一:创建Logstash集群 迁移数据使用Logstash,创建logstash服务需要费用,默认是按需收费,用户迁移完毕数据及时释放Logstash节省费用。 可以基于集群的索引不同创建多个Logstash集群分别配置不同的迁移任务。 登录云搜索服务管理控制台。 在“总览”或者“集群管理”页面,选择“Logstash”,进入Logsash类型集群管理页面。 单击“创建集群”,进入“创建集群”页面。 选择“当前区域”和“可用区”。 指定集群基本信息,选择“集群类型”和“集群版本”,并输入“集群名称”。 表1 基本参数说明 参数 说明 集群类型 选择“Logstash”。 集群版本 当前支持5.6.16、7.10.0。 对应ES集群是5.x, 6.x 选择logstash版本5.6.16, 对应ES版本是7.X 选择logstash版本7.10.0。 集群名称 自定义的集群名称,可输入的字符范围为4~32个字符,只能包含数字、字母、中划线和下划线,且必须以字母开头。 图2 基本信息配置 指定集群的主机规格相关参数。“节点数量”设置为“1”。“节点规格”选择“8U16G”,其余参数保持默认值。 图3 设置主机规格 设置集群的企业项目,保持默认值即可。 单击“下一步,网络配置”,设置集群的网络配置。 表2 参数说明 参数 说明 虚拟私有云 VPC即虚拟私有云,是通过逻辑方式进行网络隔离,提供安全、隔离的网络环境。 选择创建集群需要的VPC,单击“查看虚拟私有云”进入VPC服务查看已创建的VPC名称和ID。如果没有VPC,需要创建一个新的VPC。 说明: 此处您选择的VPC必须包含网段(CIDR),否则集群将无法创建成功。新建的VPC默认包含网段(CIDR)。 子网 通过子网提供与其他网络隔离的、可以独享的网络资源,以提高网络安全。 选择创建集群需要的子网,可进入VPC服务查看VPC下已创建的子网名称和ID。 安全组 安全组是一个逻辑上的分组,为同一个VPC内具有相同安全保护需求并相互信任的弹性云服务器提供访问策略。单击“查看安全组”可了解安全组详情。 说明: 请确保安全组的“端口范围/ICMP类型”为“Any”或者包含端口9200的端口范围。 图4 设置网络规格 单击“下一步:高级配置”,高级配置可选择默认配置和自定义。此样例保持默认配置即可。 单击“下一步:确认配置”,确认完成后单击“立即创建”开始创建集群。 单击“返回集群列表”,系统将跳转到“集群管理”页面。您创建的集群将展现在集群列表中,且集群状态为“创建中”,创建成功后集群状态会变为“可用”。
  • 步骤四:增量迁移 使用putty登录准备工作中创建的Linux虚拟机。 在Logstash集群管理页面,单击步骤一:创建Logstash集群中创建的集群名称,进入集群的基本信息页面。选择“配置中心”,或者直接单击目标集群操作列的“配置中心”,进入配置中心页面。 选择步骤三:配置Logstash增量迁移任务中所创建的配置文件,单击左上角的“启动”。 根据界面提示,选择“是”启动Logstash服务会立刻开始迁移数据。 此时可以在管道下面看到启动的配置文件。 数据迁移完毕检查数据一致性,使用putty登录linux虚拟机,执行python checkIndices.py 对比数据结果。
  • 约束和限制 Logstash版本约束: CSS 支持5.5.1,6.3.2,6.5.4,7.1.1,7.6.2,7.10.2多个版本,迁移集群尽量保持大版本一致。 对应ES集群是5.x, 6.x 选择logstash版本5.6.16, 对应ES版本是7.X 选择logstash版本7.10.0。 集群迁移过程禁止修改索引,修改索引会导致原数据和目标数据内容不一致。 索引大小小于100G可以使用迁移任务不用单独分析索引,简化分析工作。
  • 背景信息 如果您要以按需计费或者包年包月方式使用集群,则直接创建集群。 新建集群时,当设置不同节点类型时支持的节点数量区间会有区别,具体情况请参考表1。 表1 不同节点类型的节点数量说明 集群包含的节点类型 节点数量的取值范围 ess ess:1~32 ess、ess-master ess:1~200 ess-master:3~9的奇数 ess、ess-client ess:1~32 ess-client:1~32 ess、ess-cold ess:1~32 ess-cold:1~32 ess、ess-master、ess-client ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess、ess-master、ess-cold ess:1~200 ess-master:3~9的奇数 ess-cold:1~32 ess、ess-client、ess-cold ess:1~32 ess-client:1~32 ess-cold:1~32 ess、ess-master、ess-client、ess-cold ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess-cold:1~32 四种节点类型的说明: ess:默认节点类型,即创建集群时必选的数据节点类型,其他3种节点类型都是基于业务需要可选的类型。 ess-master:Master节点 ess-client:Client节点 ess-cold:冷数据节点
  • HBase Elasticsearch schema说明 HBase通过表的METADATA来存储Elasticsearch schema的定义: 表1 schema定义 字段名称 value说明 是否必填 hbase.index.es.enabled 该HBase表在Elasticsearch中是否创建全文索引,true表示创建,默认为false。 是 hbase.index.es.endpoint 云搜索服务集群(Elasticsearch引擎)的访问地址,例如'ip1:port,ip2:port'。 是 hbase.index.es.indexname HBase表对应在Elasticsearch中的索引名称,必须小写。 是 hbase.index.es.shards Elasticsearch中索引的分片数量,默认5。取值为大于等于1的整数。 否 hbase.index.es.replicas Elasticsearch中的索引的副本数量,默认1。取值为大于等于0的整数。 否 hbase.index.es.schema HBase和Elasticsearch的字段映射,json数组格式的字符,每个元素包含以下字段: name:Elasticsearch中的字段名称。 type:Elasticsearch中的字段类型。 hbaseQualifier:数据源HBase qualifier。 analyzer:text类型的字段通过“analyzer”可以指定分词器。中文分词器一般使用“ik_smart”。默认是“Standard”分词器,支持英文。 例如: '[ {"name":"contentCh","type":"text","hbaseQualifier":"cf1:contentCh","analyzer":"ik_smart"}, {"name":"contentEng","type":"text","hbaseQualifier":"cf2:contentEng"},{"name":"id","type":"long","hbaseQualifier":"cf1:id"} ]' 是 HBase-Elasticsearch全文检索当前支持的数据类型有{"text", "long", "integer", "short", "byte", "double", "float","boolean"},也就是schema中type的取值类型。text是Elasticsearch中的文本类型。全文检索一般是指对text类型数据的检索,同时也支持基本数据类型的准确检索。 父主题: 开发HBase Elasticsearch全文检索应用
  • HBase Elasticsearch schema定义说明 HBase通过表的METADATA来存储Elasticsearch schema的定义: 表1 schema定义 字段名称 value说明 是否必填 hbase.index.es.enabled 该HBase表在Elasticsearch中是否创建全文索引,true表示创建,默认为false。 是 hbase.index.es.endpoint 云搜索服务集群(Elasticsearch引擎)的访问地址,例如'ip1:port,ip2:port'。 是 hbase.index.es.indexname HBase表对应在Elasticsearch中的索引名称,必须小写。 是 hbase.index.es.shards Elasticsearch中索引的分片数量,默认5。取值为大于等于1的整数。 否 hbase.index.es.replicas Elasticsearch中的索引的副本数量,默认1。取值为大于等于0的整数。 否 hbase.index.es.schema HBase和Elasticsearch的字段映射,json数组格式的字符,每个元素包含以下字段: name:Elasticsearch中的字段名称。 type:Elasticsearch中的字段类型。 hbaseQualifier:数据源HBase qualifier。 analyzer:text类型的字段通过“analyzer”可以指定分词器。中文分词器一般使用“ik_smart”。默认是“Standard”分词器,支持英文。 例如: '[ {"name":"contentCh","type":"text","hbaseQualifier":"cf1:contentCh","analyzer":"ik_smart"}, {"name":"contentEng","type":"text","hbaseQualifier":"cf2:contentEng"},{"name":"id","type":"long","hbaseQualifier":"cf1:id"} ]' 是 HBase-Elasticsearch全文检索当前支持的数据类型有{"text", "long", "integer", "short", "byte", "double", "float","boolean"},也就是schema中type的取值类型。text是Elasticsearch中的文本类型。全文检索一般是指对text类型数据的检索,同时也支持基本数据类型的准确检索。
  • 原理 CloudTable作为大数据存储服务,用户数据以Byte类型存储,同时提供高效的kv随机查询能力。在此基础上,用户根据自身业务需求,自定义schema来指定部分字段的数据类型(一般是文本类型)来扩展CloudTable的全文检索能力。CloudTable服务是计算和存储分离,数据存储易扩容和低成本,适合作为海量源数据(任何数据类型)的主存储系统,云搜索服务(Elasticsearch)保留轻量级的索引数据来支持关键词检索。如下图所示: 图1 原理图 用户创建HBase表时如果定义部分字段开启全文索引,HBase写入数据时会自动同步全文索引数据到云搜索服务中,同时HBase原生的数据读取接口scan在kv读取能力上,也支持常用的全文检索能力。对于复杂的高阶检索能力,用户可以先调用Elasticsearch的接口再调用CloudTable的读接口来组合完成业务逻辑。
  • 使用场景 用户业务数据海量,需要HBase作为大数据在线存储系统提供最基础的高效高并发低时延KV查询能力。同时,数据的字段种类、数量众多,即对应的业务多样化。比如某表的一行数据,部分文本字段需要用关键词来全文检索,部分字段是二级索引,以及部分字段应用于标签位图索引。此场景适合CloudTable服务开启Elasticsearch全文检索能力,同时也保留其他业务扩展能力。例如: 搜索网站,实时存储海量用户的搜索词条信息、用户环境信息以及基本信息,并按照商品关键词提取用户信息,信息立即转售给第三方电商平台。 智慧医院的智能病例系统,存储病人就医信息,信息包括病人的基本信息、身体当前状态信息、医生当前职业信息、病情描述、诊断结果描述、服用药品等信息。医院信息平台根据当前社会的疫情、违禁药品、或技术突破等关键词,统计或查找历史就医的病人,回访病人或者联系病人使用新技术二次诊断等创新型贴心业务。 政府智能舆情治理系统,海量存储主流媒体平台用户的社会性言论和用户信息、转发次数等数据。检索出当前的热点事件,如果是造谣事件,系统自动提醒用户当前事件的真实性、用户发表/转发的社会影响性数据、以及相关的法律条文和类似案件。智能的反馈机制给造谣用户起到震慑作用,引导良好的言论风气。