使用Java连接Elasticsearch数据库(验证用户/不验证用户)
最近用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数据库(验证用户/不验证用户)相关推荐
- Java连接SQL数据库失败的分析思路
简单的说下java连接SQL数据库的步骤: 1. 首先要有一个jtds.jar数据库驱动包. 2. 可先在项目下新建一个Folder,取名为lib,把jtds驱动包放到lib文件夹下. 3. 在项目上 ...
- qt mysql 注册码_QT连接Oracle数据库并实现登录验证的操作步骤
目的: 本文实现QT登录界面,输入账号和密码后,系统连接Oracle数据进行判断账号和密码(MD5加密)是否和数据库一致,如果一致则提示登录成功. 开发环境:Windows10+QT5.14.2+Or ...
- java连接mysql数据库 R_Java连接Mysql数据库详细代码实例
这篇文章主要介绍了Java连接Mysql数据库详细代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 隔了一段时间没连过数据库,代码都忘记了,网 ...
- 从零开始的java连接sqlserver数据库教程
通过java连接sqlserver数据库教程 使用的数据库是SQL Server 2008,实现利用java对数据库进行操作. 需要做的准备: SQL Server 2008.JDBC驱动包(sqlj ...
- Java连接MySQL数据库的超级详细步骤(Windows)
1. 数据准备 1. 下载JDK 下载Java开发工具包JDK,下载地址:https://www.oracle.com/java/technologies/javase-jdk14-downloads ...
- Java 连接 Access 数据库
测试代码如下: package com.songyanjun.util;import java.sql.*;/*** @描述: TODO java连接Access数据库 * * <p>* ...
- java连接Hbase数据库
java连接Hbase数据库 如果是是连接机群上的Hbase服务,需要提前将相关的几个xml文件存放在本地的编程目录下,否则开发端无法获取机群信息及授权: hdfs-site.xml core-sit ...
- java连接Orcale数据库并查询、插入、删除数据
java连接Orcale数据库并查询.插入.删除数据 oci和thin是Oracle提供的两套Java访问Oracle数据库方式. thin是一种瘦客户端的连接方式 oci是一种胖客户端的连接方式 J ...
- java linux mysql数据库_Linux Java连接MySQL数据库
Linux(Ubuntu平台)Java通过JDBC连接MySQL数据库,与Windows平台类似,步骤如下: 解压 jdbc: tar -zxvf mysql-connector-java-5.1.1 ...
最新文章
- 快速获取OpenCV库(Lib)文件下的所有文件的目录名~
- 程序员面试题100题第29题——调整数组顺序使奇数位于偶数前面
- Java 随心笔记10
- [批处理]自动设置本机系统代理服务器
- 微信小程序里页面滚动到底部
- LPM Sprint 4-13 开发 工作总结
- [pytorch、学习] - 4.1 模型构造
- # android开发:4-1、Activity启动方式、生命周期、不同activity的数据传递
- C#LeetCode刷题之#893-特殊等价字符串组​​​​​​​​​​​​​​(Groups of Special-Equivalent Strings)
- redis专题:redis面试题汇总
- hive --metastore三种模式
- 【OpenCV学习笔记】【教程翻译】五 (车牌识别之OCR分割)
- OPPO R9s刷机教程 可解锁线刷包 救砖升级
- Word和PPT中字母以及数字的上下标打法
- vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.
- 解决移动端滑动方向相反
- 1命名规则 sentinel_sentinel1 GRD数据和SLC数据预处理有什么区别吗?预处理流程是怎样的?...
- android手机用户,2011年Android手机用户使用行为研究报告
- Android实现mp3音频剪辑(带试听)
- LVGL lv_line线条(15)
热门文章
- bss、data、rodata和text
- 国产麒麟系统调用PageOffice在线编辑保存WPS文档
- mPEG2000-DMG,160743-62-4,DMG-PEG2000,mPEG2000- 二肉豆蔻酰基-外消旋-甘油
- swing 按钮字体字体_装饰字体
- 专业课c语言可以调剂吗,调剂没有想象得那么难:关于考研调剂的那些事儿
- linux安装tune2fs工具,Linux 开机自检的设置(tune2fs和fsck)
- android 之 ActionBar
- Linux-Centos7.x无法重启网络
- 轴承上下料系统 欧姆龙NX1P2-1140DT,经典四轴定位控制
- 【JVM系列】读懂Java虚拟机(JVM)这一篇就够了!