华为云Elasticsearch(FusionInsight HD) 连接和开发教程-环境准备

这篇具有很好参考价值的文章主要介绍了华为云Elasticsearch(FusionInsight HD) 连接和开发教程-环境准备。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

应用开发简介

Elasticsearh简介

Elasticsearch是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎和分析引擎。设计用于大数据中,能够稳定、可靠、快速地实现实时搜索和分析,并且安装使用的方法十分简单方便。

Elasticsearch相比传统关系数据库,通过时间戳或者精确匹配做过滤的基本功能外,还能够进行全文搜索,处理同义词和根据相关性给文档打分,根据同一份数据生成分析和聚合的结果,在没有大量工作进程的情况下能做到对数据的实时处理。这也是Elasticsearch存在的重要意义。它让你以前所未有的速度处理大数据。

常用概念

基本概念

  • cluster

    代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。Elasticsearch的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看Elasticsearch集群,在逻辑上是个整体,你与任何一个节点的通信和与整个Elasticsearch集群通信是等价的。

  • shards

    代表索引分片,Elasticsearch可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

  • replicas

    代表索引副本,Elasticsearch可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高Elasticsearch的查询效率,Elasticsearch会自动对搜索请求进行负载均衡。

  • recovery

    代表数据恢复或叫数据重新分布,Elasticsearch在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

  • river

    代表Elasticsearch的一个数据源,也是其它存储方式(如:数据库)同步数据到Elasticsearch的一个方法。它是以插件方式存在的一个Elasticsearch服务,通过读取river中的数据并把它索引到Elasticsearch中,官方的river有couchDB、RabbitMQ、Twitter、Wikipedia的。

  • gateway

    代表Elasticsearch索引快照的存储方式,Elasticsearch默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个Elasticsearch集群关闭再重新启动时就会从gateway中读取索引备份数据。Elasticsearch支持多种类型的gateway,有本地文件系统(默认),分布式文件系统和Hadoop的HDFS。

  • discovery.zen

    代表Elasticsearch的自动发现节点机制,Elasticsearch是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。

  • Transport

    代表Elasticsearch内部节点或集群与客户端的交互方式,默认内部是使用TCP协议进行交互,同时它支持HTTP协议(json格式)、Thrift、Servlet、Memcached、ZeroMQ等的传输协议(通过插件方式集成)。

  • Index

    这是Elasticsearch存储数据的地方,类似于关系数据库的database。

  • Document type

    类似关系数据库的表,一个index里面只可以有一个Document type。

  • Document

    这个类似关系数据库的一行,每一Document都有一个唯一的ID作为区分;

  • Field

    类似关系数据库的某一列,这是Elasticsearch数据存储的最小单位。

下载客户端

操作场景

您可以执行如下操作来完成运行环境准备。

操作步骤

  1. 确认服务端Elasticsearch组件已经安装,并正常运行。
  2. 下载Elasticsearch客户端程序到本地。
    1. 登录FusionInsight Manager系统。

      在浏览器地址栏中输入访问地址,地址格式为“http://FusionInsight Manager系统的WebService浮动IP地址:8080/web”。

      例如,在IE浏览器地址栏中,输入“http://10.10.10.172:8080/web”。

    2. 单击“集群 > 待操作集群的名称 > 服务 > Elasticsearch > 更多 > 下载客户端”,“客户端类型”勾选“完整客户端”,单击“确定”开始下载客户端,等待下载完成。
    3. 获取并解压缩安装包“FusionInsight_Cluster_<集群ID>_Elasticsearch_Client.tar”。

配置并导入样例工程

概述

背景信息

Elasticsearch客户端安装程序目录中包含了Elasticsearch开发样例工程,将工程导入到IntelliJ IDEA开始样例学习。

前提条件

确保本地PC的时间与FusionInsight集群的时间差要小于5分钟,若无法确定,请联系系统管理员。FusionInsight集群的时间可通过FusionInsight Manager页面右下角查看。

导入Rest Client客户端样例工程

操作步骤

  1. 将在下载的客户端压缩文件包“FusionInsight_Cluster_<集群ID>_Elasticsearch_Client.tar”解压。
  2. 压缩包解压后,在“FusionInsight_Cluster_<集群ID>_Elasticsearch_ClientConfig\Elasticsearch”目录可获取样例工程“elasticsearch-rest-client-example ”。
  3. 在应用开发环境中,导入样例工程到IntelliJ IDEA开发环境。
    1. 选择“File > New > Project from Existing Sources”。
    2. 在显示的“Select File or Directory to Import”对话框中,选择"“elasticsearch-rest-client-example”"文件夹中的“.project”文件,单击“OK”。
    3. 确认后续配置,单击“Next”;如无特殊需求,使用默认值即可。
    4. 选择推荐的JDK版本,单击“Finish”完成导入。
  4. 获取新建用户的认证凭据文件。参考“准备开发用户”获取解压得到的用户user.keytab文件与krb5.conf文件,复制到样例工程的conf目录下,用于在样例工程中进行安全认证。
  5. 在客户端压缩文件包的“FusionInsight_Cluster_<集群ID>_Elasticsearch_ClientConfig\Elasticsearch\config”目录下存在配置文件“es-rest-client-example.properties”,请拷贝该文件的相关参数值赋值给样例工程conf目录下的文件“esParams.properties”。
  6. 在开发环境IntelliJ IDEA中,样例工程的conf目录下,打开文件“esParams.properties”,按需修改如下表1-9中提供的参数。

表1-9 配置说明表

配置名称

默认值

含义

esServerHost

形如ip1:port1,ip2:port2,ip3:port3......

Elasticsearch集群中任意节点IP与该IP节点上已安装的Elasticsearch实例的HTTP端口组合的列表,EsMaster实例除外

connectTimeout

5000

客户端和服务端建立连接的超时时间,以毫秒为单位

socketTimeout

60000

客户端获取服务器响应的超时时间,以毫秒为单位

connectionRequestTimeout

100000

从连接池获取连接的超时时间,以毫秒为单位

isSecureMode

true

客户端是否开启安全模式,true为开启安全模式,false为开启普通模式

principal

esuser@<系统域名>

认证主体

snifferEnable

true

Rest client是否开启嗅探功能,true为开启,false为不开启

customJaasPath

用户自定义jaas.conf文件路径,具体到文件名,不填将自动生成

       7. 确认样例工程conf目录下的“esParams.properties”中的参数“isSecureMode”=“true”,使用安全模式。

说明:

  • 导入样例代码时,加载如果报错,请使用较新的IntelliJ IDEA版本。
  • EsMaster实例的http请求功能已经关闭,esServerHost参数的值中,请不要包含EsMaster实例,即24148端口,否则会导致请求失败。
  • 配置参数“esServerHost”为已安装Elasticsearch集群中任意节点IP与该IP节点上已安装的任意Elasticsearch实例的HTTP端口组合的列表,形如“ip1:port1,ip2:port2,ip3:port3......”。该端口值可以通过以下方式查看:FusionInsight Manager界面选择“集群 > 待操作集群的名称 > 服务 > Elasticsearch > 配置 > 全部配置”,单击对应实例“端口”,查看对应实例的“SERVER_PORT”参数值。
  • 如果要确认当前Elasticsearch集群是安全模式还是普通模式,请登录Fusioninsight集群界面,选择“集群 > 待操作集群的名称 > 服务 > Elasticsearch > 配置 > 全部配置”,单击“安全”,找到参数“ELASTICSEARCH_SECURITY_ENABLE”,如果该值为true,则Elasticsearch集群为安全模式,如果为false,则Elasticsearch集群为普通模式。
  • 用户可登录FusionInsight Manager,选择“系统 > 权限 > 域和互信”,“本端域”参数的值即为当前系统域名。例如“本端域”参数为“9427068F-6EFA-4833-B43E-60CB641E5B6C.COM”,则“principal”的值为“esuser@9427068F-6EFA-4833-B43E-60CB641E5B6C.COM”。
  • 用户可通过配置参数“customJaasPath”自定义jaas.conf文件路径,如无该需求,可以不填,将自动生成。
  • 参数“customJaasPath”需要安装了6.5.1.5及以后的补丁才支持。

导入Transport客户端样例工程

操作步骤

  1. 将在下载的客户端压缩文件包“FusionInsight_Cluster_<集群ID>_Elasticsearch_Client.tar”解压。
  2. 压缩包解压后,在“FusionInsight_Cluster_<集群ID>_Elasticsearch_ClientConfig\Elasticsearch”目录可获取样例工程“elasticsearch-transport-client-example ”。
  3. 在应用开发环境中,导入样例工程到IntelliJ IDEA开发环境。
  1. 选择“File > New > Project from Existing Sources”。
  2. 在显示的“Select File or Directory to Import”对话框中,选择"“elasticsearch-transport-client-example”"文件夹中的“.project”文件,单击“OK”。
  3. 确认后续配置,单击“Next”;如无特殊需求,使用默认值即可。
  4. 选择推荐的JDK版本,单击“Finish”完成导入。

4. 获取新建用户的认证凭据文件。参考“准备开发用户”获取解压得到的用户user.keytab文件与krb5.conf文件,复制到样例工程的conf目录下,用于在样例工程中进行安全认证。

5. 在客户端压缩文件包的“FusionInsight_Cluster_<集群ID>_Elasticsearch_ClientConfig\Elasticsearch\config”目录下存在配置文件“es-transport-client-example.properties”,该文件已包含当前Elasticsearch集群中的所有实例列表,请拷贝该文件的相关内容覆盖样例工程conf目录下的“esParams.properties”。

6. 在开发环境IntelliJ IDEA中,样例工程的conf目录下,打开文件“esParams.properties”,按需修改表1-10中提供的参数。

 表1-10 配置说明表

配置名称

默认值

含义

clusterName

elasticsearch_cluster

Elasticsearch集群的名称

esServerHosts

ip1:port1,ip2:port2

集群中节点的ip和transport端口,多个用逗号隔开

principal

esuser@系统域名

认证主体

krb5Path

/D:/workspace/esuser/

krb5文件的路径

keytabPath

/D:/workspace/esuser/

keytab文件的路径

isSecureMode

true

是否为安全模式,true表示安全模式,false表示普通模式

isSniff

true

是否开启嗅探功能,true表示开启嗅探,false表示不开启嗅探

customJaasPath

用户自定义jaas.conf文件路径,具体到文件名,不填将自动生成

  • 说明:

  • 集群名称“clusterName”可以在装有Elasticsearch客户端的节点上执行以下命令查看:

    curl -XGET --negotiate --tlsv1.2 -k -u : "https://ip:httpPort/_cluster/health?pretty" | grep cluster_name

    命令中的“ip”参数为Elasticsearch集群中任意节点的“ip”,参数“httpport”为该IP节点上已安装的任意EsNode实例的HTTP端口,该端口值可以在FusionInsight Manager界面的Elasticsearch服务下,选择该实例的“配置”,选择“全部配置”右上角搜索参数“SERVER_PORT”获取。

  • “principal”的格式为“用户名+域名”。用户在FusionInsight Manager的“系统 > 权限 > 用户”中创建。可登录FusionInsight Manager,选择“系统 > 权限 > 域和互信”,查看“本端域”参数值,即为当前系统域名。例如“本端域”参数为“9427068F-6EFA-4833-B43E-60CB641E5B6C.COM”,则“principal”的值为“esuser@9427068F-6EFA-4833-B43E-60CB641E5B6C.COM”。
  • 配置参数“esServerHosts”为已安装Elasticsearch集群中任意节点IP与该IP节点上已安装的任意Elasticsearch实例的HTTP端口组合的列表,形如“ip1:port1,ip2:port2,ip3:port3......”。该端口值可以通过以下方式查看:FusionInsight Manager界面选择“集群 > 待操作集群的名称 > 服务 > Elasticsearch > 服务配置”,参数类别选择“全部配置”,单击对应实例“端口”,查看对应实例的“TRANSPORT_TCP_PORT”参数值。
  • 用户可通过配置参数“customJaasPath”自定义jaas.conf文件路径,如无该需求,可以不填,将自动生成。
  • 参数“customJaasPath”需要安装了6.5.1.5及以后的补丁才支持。

准备安全认证

准备认证机制代码

场景说明

在安全集群环境下,各个组件之间的相互通信不能够简单的互通,而需要在通信之前进行相互认证,以确保通信的安全性。Elasticsearch应用开发需要进行Spnego安全认证。Spnego认证是一种扩展了Kerberos,使用GSS-API认证机制的安全协议。安全认证主要采用代码认证方式,需要“krb5.conf”和“user.keytab”,支持Oracle JAVA平台和IBM JAVA平台。

“krb5.conf”和“user.keytab”文件已经通过“准备开发用户”获得,并放置于样例工程conf目录下。

  • Rest Client客户端修改样例工程conf目录下配置文件esParams.properties的参数principal为“新建的用户名@<系统域名>”。
  • Transport客户端修改样例工程conf目录下配置文件esParams.properties的参数principal为“新建的用户名@<系统域名>”。

Transport客户端认证还需进行如下处理:文章来源地址https://www.toymoban.com/news/detail-768586.html

  • 安全模式和非安全模式下不同的处理
if (isSecureMode.equals("true")) {
    setSecConfig();} else {
    System.setProperty("es.security.indication", "false");
    
}
builder = RestClient.builder(HostArray);
  • 设置安全认证需要的环境变量
private static void setSecConfig() {
  try {
   String path = System.getProperty("user.dir") + File.separator + "conf" + File.separator;
   LOG.info("FilePath is " + path);
   LoginUtil.setJaasFile(principal, path + "user.keytab");
   LoginUtil.setKrb5Config(path + "krb5.conf");
   System.setProperty("elasticsearch.kerberos.jaas.appname", "EsClient");

   // add for ES security indication
   System.setProperty("es.security.indication", "true");
   LOG.info("es.security.indication is  " + System.getProperty("es.security.indication"));
  } catch (Exception e) {
   LOG.error("Failed to set security conf", e);
  }
 }

到了这里,关于华为云Elasticsearch(FusionInsight HD) 连接和开发教程-环境准备的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenHarmony-鸿蒙】 华为智能家居IoT设备开发-环境搭建篇 一键部署开发环境

    轻量与小型系统入门概述 简介 OpenHarmony轻量和小型系统适用于内存较小的IOT设备(参考内存≥128KiB)。通过本文,开发者可以快速熟悉OpenHarmony轻量和小型系统的环境搭建、编译、烧录、调测以及运行“Hello World”等。 开发环境 开发者通常习惯采用Windows+Ubuntu环境进行OpenHa

    2024年02月12日
    浏览(35)
  • linux环境下Elasticsearch安装教程

    ElasticSearch(简称ES)是一个分布式、RESTful 风格的搜索和数据分析引擎,是用Java 开发并且是当前最流行的开源的企业级搜索引擎,能够达到近实时搜索,稳定,可靠,快 速,安装使用方便。 客户端支持Java、.NET(C#)、PHP、Python、Ruby等多种语言。 官方网站: https://www.elastic

    2024年02月06日
    浏览(22)
  • windows环境下elasticsearch使用教程

    windows环境下elasticsearch使用教程如下: 一、首先安装jdk ElasticSearch是基于lucence开发的,lucence是apache开发的,因此 ElasticSearch 运行环境就需要java jdk支持。所以要先安装JAVA环境。由于ElasticSearch 5.x 往后依赖于JDK 1.8的,所以现在我们下载JDK 1.8或者更高版本。本文安装的是java 1

    2023年04月08日
    浏览(25)
  • 华为手机如何进入开发者模式?连接studio真机调试

    对于安卓开发者来说, 真机调试 是非常好的选择,对电脑配置也没有过分的要求。如果采用A ndroid Studio自带安卓虚拟机调试 ,真的很慢,一点都不友好。 真机调试的步骤:打开设置-关于手机-版本号,然后 连续点击版本号 ,会提示 已经处于开发者选项 。退回到上级目录,

    2024年02月13日
    浏览(38)
  • windows 下 搭建 ElasticSearch 环境,前端开发常用软件

    打开浏览器测试: http://localhost:9200 彻底关闭ES 第三步:将ElasticSearch安装为Windows服务 进入bin目录下执行命令: elasticsearch-service.bat install 在windows服务中查看 elasticsearch-service.bat后面还可以执行这些命令 install: 安装Elasticsearch服务 remove: 删除已安装的Elasticsearch服务(如果启动则

    2024年04月13日
    浏览(39)
  • 华为云IOT Android应用开发详细教程

          大家好,上一期发布的教程叫大家如何利用华为云物联网平台提供的官方Java Demo去编写Java上位机程序,由于主要是用的是GET请求去查询设备影子和查询设备,之后接到了很多小伙伴私信咨询POST请求的实现,现在带着大家,写一个不基于官方Java Demo,而是完全参考于华

    2024年02月15日
    浏览(52)
  • 华为云物联网平台微信小程序开发教程2.0【完整详细教程】

      在之前曾发布过一篇文章“华为云物联网平台的微信小程序开发”,在最近接到部分用户私信在使用开发过程中出现的问题,例如API访问的\\\"401\\\"现象等问题,在重新查看上面的文章教程时发现教程内容的步骤不详细,现对教程重新整理,将具体的开发过程以及工程源码分

    2024年02月09日
    浏览(32)
  • Elasticsearch教程—Elasticsearch Java API Client [8.6]开发入门(官方原版)

    大家好,我是Doker! Java 8 或更高版本。 一个 JSON 对象映射库,允许无缝集成 您的应用程序类与 Elasticsearch API 一起。Java 客户端具有 支持 Jackson 或 Eclipse Yasson 等 JSON-B 库。 Java API客户端由三个主要组件组成: API客户端类。这些为Elasticsearch API提供了强类型的数据结构和方法。

    2024年02月13日
    浏览(25)
  • 如何在 IDEA 中设置远程连接服务器开发环境并实现固定地址远程 Linux 环境

    本文主要介绍如何在IDEA中设置远程连接服务器开发环境,并结合Cpolar内网穿透工具实现无公网远程连接,然后实现远程Linux环境进行开发。 IDEA的远程开发功能,可以将本地的编译、构建、调试、运行等工作都放在远程服务器上执行,而本地仅运行客户端软件进行常规的开发

    2024年02月05日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包