最近用JAVA连接数据库,特别是在es上踩了很多坑,专门写一篇文章记录一下,这篇文章主要解决下面两个问题:

1.Elasticsearch数据库低级客户端Java Low Level REST Client连接es数据库

2.Elasticsearch数据库使用版本不匹配

首先来说说第一种问题。

因为想测试代码通用性,所以安装了两个es版本,一个为7.x,另一个为6.x版本。一开始我是使用高级客户端进行连接的,因为高级客户端功能比较多,后续也比较容易操作,但由于高级客户端对版本要求比较严格,所以后面选择使用兼容性更强的低级客户端RestClient。

然后就是校验问题,因为只要输入了ip地址和端口号,使用代码就可以构建客户端,所以我通过索引名来进行校验,确保自己真的连接上了es。下面直接上测试代码:

public class Test {public static void main(String[] args) {Test test=new Test();test.testConn();}/**连接es数据库**/public void testConn(){//1.构建没有用户名和密码的客户端RestClient restClient = RestClient.builder(new HttpHost("localhost", 9200, "http")).build();//2.构建有用户名和密码的客户端//设定用户名和密码final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("user", "password"));RestClient restClient = RestClient.builder(new HttpHost("localhost", 9200, "http")).setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)).build();//3.进行校验操作//查看索引中节点的信息,可以直接用GET方法得到String method = "GET";String endpoint = "/"+"indexName";Response response = null;try {Request request=new Request(method,endpoint);response = restClient.performRequest(request);System.out.println(response.toString());} catch (Exception e) {//抛出异常throw new RuntimeException("校验不成功", e);}}
}

控制台输出以下,代表连接成功:

至于第二种问题,不知道各位在测试连接的时候有没有遇到过以下报错(提示找不到这个方法):

java.lang.NoSuchMethodError: org.elasticsearch.client.RestClient.performRequest(Ljava/lang/String;Ljava/lang/String;[Lorg/apache/http/Header;)Lorg/elasticsearch/client/Response

又或者是(参数无法识别):

Elasticsearch exception [type=illegal_argument_exception, reason=request [/index索引名/_search] contain unrecognized parameter: [ignore_throttled]]

上面两种报错,都是版本不匹配问题。一是因为我们自己导入依赖时没有指定版本,二是spring集成es时都有默认的集成版本,如果搭建版本不匹配就会报错。所以解决这两个问题,首先是在依赖中指定es版本,然后再显式指定es版本(没错我两个都放进去了),我指定的版本是7.4.2:

<dependencies><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.4.2</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>7.4.2</version></dependency>
</dependencies>

在项目中显式指定:

<properties><elasticsearch.version>7.4.2</elasticsearch.version>
</properties>

问题到现在就解决结束了,有兴趣的可以看看es和spring对应版本,建议各位做好版本匹配,不然真的会浪费很多时间...TT

使用Java连接Elasticsearch数据库(验证用户/不验证用户)相关推荐

  1. Java连接SQL数据库失败的分析思路

    简单的说下java连接SQL数据库的步骤: 1. 首先要有一个jtds.jar数据库驱动包. 2. 可先在项目下新建一个Folder,取名为lib,把jtds驱动包放到lib文件夹下. 3. 在项目上 ...

  2. qt mysql 注册码_QT连接Oracle数据库并实现登录验证的操作步骤

    目的: 本文实现QT登录界面,输入账号和密码后,系统连接Oracle数据进行判断账号和密码(MD5加密)是否和数据库一致,如果一致则提示登录成功. 开发环境:Windows10+QT5.14.2+Or ...

  3. java连接mysql数据库 R_Java连接Mysql数据库详细代码实例

    这篇文章主要介绍了Java连接Mysql数据库详细代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 隔了一段时间没连过数据库,代码都忘记了,网 ...

  4. 从零开始的java连接sqlserver数据库教程

    通过java连接sqlserver数据库教程 使用的数据库是SQL Server 2008,实现利用java对数据库进行操作. 需要做的准备: SQL Server 2008.JDBC驱动包(sqlj ...

  5. Java连接MySQL数据库的超级详细步骤(Windows)

    1. 数据准备 1. 下载JDK 下载Java开发工具包JDK,下载地址:https://www.oracle.com/java/technologies/javase-jdk14-downloads ...

  6. Java 连接 Access 数据库

    测试代码如下: package com.songyanjun.util;import java.sql.*;/*** @描述: TODO java连接Access数据库 * * <p>* ...

  7. java连接Hbase数据库

    java连接Hbase数据库 如果是是连接机群上的Hbase服务,需要提前将相关的几个xml文件存放在本地的编程目录下,否则开发端无法获取机群信息及授权: hdfs-site.xml core-sit ...

  8. java连接Orcale数据库并查询、插入、删除数据

    java连接Orcale数据库并查询.插入.删除数据 oci和thin是Oracle提供的两套Java访问Oracle数据库方式. thin是一种瘦客户端的连接方式 oci是一种胖客户端的连接方式 J ...

  9. java linux mysql数据库_Linux Java连接MySQL数据库

    Linux(Ubuntu平台)Java通过JDBC连接MySQL数据库,与Windows平台类似,步骤如下: 解压 jdbc: tar -zxvf mysql-connector-java-5.1.1 ...

最新文章

  1. 快速获取OpenCV库(Lib)文件下的所有文件的目录名~
  2. 程序员面试题100题第29题——调整数组顺序使奇数位于偶数前面
  3. Java 随心笔记10
  4. [批处理]自动设置本机系统代理服务器
  5. 微信小程序里页面滚动到底部
  6. LPM Sprint 4-13 开发 工作总结
  7. [pytorch、学习] - 4.1 模型构造
  8. # android开发:4-1、Activity启动方式、生命周期、不同activity的数据传递
  9. C#LeetCode刷题之#893-特殊等价字符串组​​​​​​​​​​​​​​(Groups of Special-Equivalent Strings)
  10. redis专题:redis面试题汇总
  11. hive --metastore三种模式
  12. 【OpenCV学习笔记】【教程翻译】五 (车牌识别之OCR分割)
  13. OPPO R9s刷机教程 可解锁线刷包 救砖升级
  14. Word和PPT中字母以及数字的上下标打法
  15. vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.
  16. 解决移动端滑动方向相反
  17. 1命名规则 sentinel_sentinel1 GRD数据和SLC数据预处理有什么区别吗?预处理流程是怎样的?...
  18. android手机用户,2011年Android手机用户使用行为研究报告
  19. Android实现mp3音频剪辑(带试听)
  20. LVGL lv_line线条(15)

热门文章

  1. bss、data、rodata和text
  2. 国产麒麟系统调用PageOffice在线编辑保存WPS文档
  3. mPEG2000-DMG,160743-62-4,DMG-PEG2000,mPEG2000- 二肉豆蔻酰基-外消旋-甘油
  4. swing 按钮字体字体_装饰字体
  5. 专业课c语言可以调剂吗,调剂没有想象得那么难:关于考研调剂的那些事儿
  6. linux安装tune2fs工具,Linux 开机自检的设置(tune2fs和fsck)
  7. android 之 ActionBar
  8. Linux-Centos7.x无法重启网络
  9. 轴承上下料系统 欧姆龙NX1P2-1140DT,经典四轴定位控制
  10. 【JVM系列】读懂Java虚拟机(JVM)这一篇就够了!