大数据学习[11]:JAVA连接elasticsearch5.6.1操作|问题|分析
2017-09-29 17:54
1256 查看
摘要:通过JAVA API操作elasticsearch5.6.1的连接及连接过程中所遇到的问题,问题分析,问题解决。作为一个ES的JAVA操作的新生参考与记录。
https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html
如果安装了xpack一定要查看这个:
https://www.elastic.co/guide/en/x-pack/current/java-clients.html
原因
这个因为ES安装x-pack,所以在访问x-pack的时候要加入用户名也密码;
在设置Settings中加入.put(“xpack.security.user”, “elastic:changeme”)。
原因:
不认识加了xpack开头的所有参数,这个是因为缺少xpack的lib造成的。
解决:
pom.xml加上
不过一般默认的maven配置的库对这个包是找不到,所以是要对库进行配置一下:
大数据学习[07]:elasticsearch5.6.1集群与问题:http://blog.csdn.net/ld326/article/details/78066952
【作者:happyprince, http://blog.csdn.net/ld326/article/details/78136182】
0. 官方文档
JAVA操作ES的文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html
如果安装了xpack一定要查看这个:
https://www.elastic.co/guide/en/x-pack/current/java-clients.html
1. 创建工程
创建一个mave工程2. 日志配置文件
创建文件名log4j2.properties,放在src的根目录就可以,让java可以找到;
appender.console.type = Console appender.console.name = console appender.console.layout.type = PatternLayout rootLogger.level = info rootLogger.appenderRef.console.ref = console
3. 配置pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>sparkml</groupId> <artifactId>es</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>es</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <repositories> <!-- add the elasticsearch repo --> <repository> <id>elasticsearch-releases</id> <url>https://artifacts.elastic.co/maven</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <dependencies> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.6.1</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>x-pack-transport</artifactId> <version>5.6.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.9.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
4. ES中index索引数据
5. demo java
public class App { @SuppressWarnings({ "unchecked", "resource" }) public static void main(String[] args) { // on startup TransportClient client; try { Settings settings = Settings.builder() .put("cluster.name", "esName") .put("xpack.security.transport.ssl.enabled", false) .put("xpack.security.user", "elastic:changeme") .put("client.transport.sniff", true).build(); client = new PreBuiltXPackTransportClient(settings) .addTransportAddress( new InetSocketTransportAddress(InetAddress .getByName("192.168.xxx.xxx"), 9300)) .addTransportAddress( new InetSocketTransportAddress(InetAddress .getByName("192.168.xxx.xxx"), 9300)) .addTransportAddress( new InetSocketTransportAddress(InetAddress .getByName("192.168.xxx.xxx"), 9300)); GetResponse response = client.prepareGet("index", "fulltext", "2") .setOperationThreaded(true).get(); System.out.println(response); // on shutdown client.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
6. 运行结果
loaded plugin [org.elasticsearch.index.reindex.ReindexPlugin] loaded plugin [org.elasticsearch.join.ParentJoinPlugin] loaded plugin [org.elasticsearch.percolator.PercolatorPlugin] loaded plugin [org.elasticsearch.script.mustache.MustachePlugin] loaded plugin [org.elasticsearch.transport.Netty3Plugin] loaded plugin [org.elasticsearch.transport.Netty4Plugin] loaded plugin [org.elasticsearch.xpack.XPackPlugin] {"_index":"index","_type":"fulltext","_id":"2","_version":2,"found":true,"_source":{ "content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船" } }
7.问题
7.1 出错1
failed to get node info for {#transport#-1}{aOvqR1DwTkSlqWAiPocgXw}{192.168.xxx.xxx}{192.168.xxx.xxx:9300}, disconnecting... org.elasticsearch.transport.RemoteTransportException: [node][192.168.xxx.xxx:9300][cluster:monitor/nodes/liveness] Caused by: org.elasticsearch.ElasticsearchSecurityException: missing authentication token for action [cluster:monitor/nodes/liveness] at org.elasticsearch.xpack.security.support.Exceptions.authenticationError(Exceptions.java:39) ~[?:?] at org.elasticsearch.xpack.security.authc.DefaultAuthenticationFailureHandler.missingToken(DefaultAuthenticationFailureHandler.java:74) ~[?:?] at org.elasticsearch.xpack.security.authc.AuthenticationService$AuditableTransportRequest.anonymousAccessDenied(AuthenticationService.java:553) ~[?:?] at org.elasticsearch.xpack.security.authc.AuthenticationService$Authenticator.lambda$handleNullToken$16(AuthenticationService.java:363) ~[?:?]
原因
这个因为ES安装x-pack,所以在访问x-pack的时候要加入用户名也密码;
在设置Settings中加入.put(“xpack.security.user”, “elastic:changeme”)。
7.2 出错2
Exception in thread "main" java.lang.IllegalArgumentException: unknown setting [xpack.security.transport.ssl.enabled] please check that any required plugins are installed, or check the breaking changes documentation for removed settings at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:293) at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:256) at org.elasticsearch.common.settings.SettingsModule.<init>(SettingsModule.java:139) at org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.java:138) at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:265) at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:130) at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:116) at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:106) at sparkml.es.App.main(App.java:30) Suppressed: java.lang.IllegalArgumentException: unknown setting [xpack.security.user] please check that any required plugins are installed, or check the breaking changes documentation for removed settings ... 9 more
原因:
不认识加了xpack开头的所有参数,这个是因为缺少xpack的lib造成的。
解决:
pom.xml加上
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>x-pack-transport</artifactId> <version>5.6.1</version> </dependency>
不过一般默认的maven配置的库对这个包是找不到,所以是要对库进行配置一下:
<repositories> <!-- add the elasticsearch repo --> <repository> <id>elasticsearch-releases</id> <url>https://artifacts.elastic.co/maven</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
8.题外–安装ES5.6.1
大数据学习[06]:elasticsearch5.6.1初探:http://blog.csdn.net/ld326/article/details/78057145大数据学习[07]:elasticsearch5.6.1集群与问题:http://blog.csdn.net/ld326/article/details/78066952
【作者:happyprince, http://blog.csdn.net/ld326/article/details/78136182】
相关文章推荐
- JAVA连接SQLServer基础,以及5分钟之内读+写20万条数据(40万条操作),遇到的问题
- java中操作Oracle clob数据出现的连接关闭问题
- jdbc的连接问题-----java数据学习笔记之2
- elasticsearch__1__java操作之连接es,创建Mapping,保存数据
- Java与Flex学习笔记(11)----关于Struts2拦截Flex请求的问题
- java连接操作Oracle出现的问题及解决方法
- JDBC连接并简单操作数据库存(自己学习用)
- [转]在Java中实现.net中DataTable功能以及操作双数据库的List连接问题解决方案探究
- 解决Oracle透明网关连接SQL server进行数据操作出现“列名无效”问题
- 数据连接部分通过测试源代码-----java学习笔记之4
- 黑马程序员——java中两个线程对同一个数据做不同操作的安全问题
- Java学习问题1: boolean型数据占几个字节?
- 学习笔记-Java连接数据库问题
- Java 编程技术中汉字问题的分析及解决,文件操作
- 机器学习、大数据、深度学习、数据挖掘、统计、决策和风险分析、概率和模糊逻辑的常见问题解答
- Java第一课 Java的一些基本概念,Java的起源、为什么我们要学习Java语言,Java跨平台原理剖析;Java环境变量的配置,初学者常犯的问题,Java语言的基本数据类型和Java的语句。
- JAVA视频教程,学习JAVA常见问题分析-JAVA学习方法系列
- 学习java(二)-----关于jdbc连接的"擦屁股"问题
- JAVA学习笔记(2)基本数据类型和基本操作
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce