连接 ES_演示 | 学习笔记

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 快速学习连接 ES_演示

开发者学堂课程【ElasticSearch 入门精讲连接 ES_演示学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/631/detail/9982


连接ES_演示


连接ES演示

打开 IDEA

选择 File,

新建 project,选中下属创建工程的一个母版,

一般选中的是 quickstart,选中 maven

image.png

下一步

image.png

Groupid:com.qf

ArtifactId:es-study,下一步,

下一步,finish。

等待创建完毕,

选中 enable auto-import

将依赖导入进来,改成1.8,上一个指的是编译教员程序用的基底版本,第二个指的是编译之后的自制码所对应的文件。

unit 可以选择稍微高点的版本,4.10,4.12.下面就是关于

Elasticsearch 的一些设计,一些依赖,将这些依赖直接导入进来。

直接导入依赖,首先就是 log 日志,用来打印的一些依赖,Maven 依赖:

<!-- 日志格式定制的 maven 依赖需要和资源目录 resources 下的 log4j.properties 结合在一 起使用-->

<dependency>

<groupId> org.apache.logging.log4j</groupld>

<artifactld> log4j-core </artifactId>

<version> 2.10.0</version>

</dependency>

<dependency>

<groupId> org.apache.logging.log4j</groupld>

<artifactId> log4j-api </artifactId>

<version> 2.100</version>

</dependency>

下面就是 es 设计,clent 的一些 CPI

<l-- es 客户端的依赖,其中包含了一个核心的 api: TransportClient -->

<dependency>

<groupld>org.elasticsearch.client</groupld>

<artifactld>transport</artifactld>

<!--下述通过el表达式读取上述es-version标签标签体的值-->

<version>${es-version}</version>

</dependency>

<!-- es服务器对应的核心依赖-->

<dependency>

<groupld>org.elasticsearch</groupld>

<artifactld>elasticsearch</artifactld>

<version>${es-version}</version>

ldependency>

<!--该依赖中自定义了诸如:@data 的注解,作用在实体类之上,用来简化实体类的书写,代替:getter/setter 访问器;

除了导入依赖之外,还需要在idea中进行配置,参考:

https:/jingyan.baidu.com/article/0a52e3f4e53ca1bf63ed725c.html

<dependency>

<groupld>org.projectlombok</groupld>

<artifactId>lombok</artifactId>

vrsion>1.16.20</version>

<dependency>

还有阿里巴巴的 json,这样一个 API

<!--用来操作 json 格式数据的 maven 依赖,阿里巴巴公司贡献的,阿里编程规约,p3c -->

<dependency>

<groupld>com.alibaba</groupld>

<artifactId>fastjson</artifactld>

<version>1.2.46</version>

<dependency>

<dependency>

<groupld>com.alibaba</groupIld>

xartiiacud-diuid-jariiiactld>

<!-- https://mvnrepository.com/artifact/org.nlpcn/elasticsearch-sql -->

<dependency>

<groupld>org.nlpcn</groupld>

<artifactId>elasticsearch-sql</artifactld>

<version>6.3.0.0</version>

</dependency>

</dependency>

<groupld>org.elasticsearch</groupld>

<artifactld>elasticsearch-x-content</artifactld>

<version>6.5.3</version>

</dependency>

现在将 es 所需要的依赖全部导入进来,这些依赖参考的全部都是官网,等到导入完毕就可以写程序了,

image.png

还没有导入完毕可以刷新一下,要用动态去读取 properities 动态的值,

<es-version>6.5.3</es-version>

结果:

报错可以将一些没有用到的删掉,比如 log4j 可以删掉,没有影响,包括json,projectlombok.其实需要两个依赖就够了,一个是 transportclient,另一个是 elesticsearch.

开始写代码,写之前一定要保证导入是正确的,

删除掉自动生成的源程序,建一个子包,新建一个 Package ,新建一个资源目录,叫做 resources,右键点击 mark directory as,再点击,resouces root,下面就是 log4j,它能够定制日志输出的格式。

新建一个 New Class:testes,

Description:使用 Java api 操作 ES 集群测试类<br/>

Copyright (C),2018, Jansonxu <br/>

This program is protected by copyright laws. <br/>

Date: 2019年05月12日

public class TestES {

/**

*连接es集群的端口号

/*

private final static int POR7=9300;

private TransportClient client;

/**

*前处理

@Before(前处理应该有一个注解)

public void setup() throws UnknownHostException {

System.out.println("前处理操作,用于进行全局的初始化..In");

Settings settings = Settings.builder().put("cluster.name","bigdata"). build);

Settings settings = null;

client = new PreBuiltTransportClient(settings);

client.addTransportAddresses(new TransportAddress(InetAddress.getByNamne("JANSON01"),POR7);

new TransportAddress(InetAddress. getByName("JANSON02"),POR刀),

new TransportAddress(InetAddress. getByName("JANSON03"),PORD);

/**

*正式测试的方法

@Test

public void testEnv(){

System.outprintln("正式开始测试..");

System. out.printIn("TransportClient的实例是: "+client);

}

@After

public void cleanup({

System. out.println("n后处理操作,用于进行资源的释..);

if(client!=null){

client.close();

执行是有顺序的,先执行前处理的方法,再执行正式开始测试的方法,最后进行后处理操作,

首先有一个共同的端口号:

private final static int port=9300;用 private transportclient,处理 ES 集群的一个核心端口 api,对全局的 client 进行一个支持化,client=null,如何构建 client 的实例,点进去 client 查看,属于设置内,查看有哪些类,

有一个类叫做 prebuilt transportclient,属于普通类,普通类就可以new,client=new prebuilt transportclient(),

需要查询:class,collection和hostfailurelistener,

传一个 settings 的实例,准备一个 settings,settings=null,

client=new prebuilt transportclient(settings)

再加上多个 transport 的实例:

client.addtransportaddresses(newtransportaddresses())

构建 transportaddresses 实例,需要 inetaddress,int

查看 meta address

构建 inetsockeadress 需要传一个 hostname,addr,int port 来进行构建,client.addTransportAddresses(new TransportAddress(InetAddress.getByName("-J.ANSONO1"),PORT),

new TransportAddress(InetAddress.getByName(""JANSON02"),POR7),

new TransportAddress(InetAddress.getByName("JANSON03""),POR7));

可以打印一下/**

*正式测试的方法

*/

@Test

public void testEnv(){

System.out.println("正式开始测试.."");

system.out.println("TransportClient的实例是:"+client);

@After

public void cleanup({

System. out.println("n后处理操作,用于进行资源的释..);

if(client!=null){

client.close();

运行结果:testes.java:39

意思是settings这个实例还没有准备,

Settings 是一个最终类,用build来构成他的实类,可以 put 一些参数名,参数值,

Settings settings = Settings.builder().put( key."cluster.name"“bigdata.,build();

这个参数和es集群服务器的参数是一样的。

[jerry@JANSONe1 ~]$ cd es/config/

[jerry@ANSONe1 config]$ vim elasticsearch.yml

Cluster.name:bigdata(参数名,参数值)

运行结果:ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...

实例创建成功。

<dependency>

<groupld</groupld>

<artifactld>log4j-core</artifactld>

</dependency>

搜一下 log4j,有一个 log4j coreapi 可以根据提示加进来

运行成功,证明服务器和客户端正常连接,

Log4j.2也可以加入进来,搜索 log4j,导入 log4japi,刷新,

测试结果:

Transportclient 的实例是:

org.elasticsearch.transport.client.prebuilttransportclient@7e75bf2d

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
6月前
|
前端开发
【面试题】如何使用ES6 ... 让代码优雅一点?
【面试题】如何使用ES6 ... 让代码优雅一点?
|
3天前
|
Dubbo Java 应用服务中间件
入门运行Soul
入门运行Soul
25 3
入门运行Soul
|
1月前
|
前端开发 网络协议
Nest.js 实战 (十四):如何获取客户端真实 IP
这篇文章介绍了在Nest.js应用中获取客户端真实IP地址的问题及解决方法。问题出现在使用本地代理时,请求的IP地址总是返回::1或::ffff:127.0.0.1。为解决这个问题,需要确保代理服务器正确设置转发头如X-Forwarded-For或X-Real-IP,后端服务能够读取这些头信息来确定客户端的IP地址。文章以作者自己的OpenResty应用为例,展示了如何通过配置反向代理和设置X-Forwarded-For头来获取真实IP地址,并提供了相关的代码示例。最后,文章提到了使用这个解决方案后的实际效果,例如在操作日志中记录真实IP地址。
|
6月前
|
前端开发
前端 TS 快速入门之二:接口
前端 TS 快速入门之二:接口
61 0
|
6月前
|
前端开发 JavaScript
前端 TS 快速入门之四:函数
前端 TS 快速入门之四:函数
35 0
|
6月前
|
前端开发
【前端学习】—ES6新增的方法有哪些(十五)
【前端学习】—ES6新增的方法有哪些(十五)
|
JSON 前端开发 JavaScript
前端实战【ES6】你会ES6,但是你真的会用吗?
前端实战【ES6】你会ES6,但是你真的会用吗?
140 0
前端实战【ES6】你会ES6,但是你真的会用吗?
|
前端开发
前端学习案例2-es6的拷贝
前端学习案例2-es6的拷贝
39 0
前端学习案例2-es6的拷贝
ES6 从入门到精通 # 08:扩展的对象的功能
ES6 从入门到精通 # 08:扩展的对象的功能
76 0
ES6 从入门到精通 # 08:扩展的对象的功能
|
Linux 数据安全/隐私保护 开发者
默认配置单机版演示|学习笔记
快速学习默认配置单机版演示。
默认配置单机版演示|学习笔记

相关实验场景

更多