Elasticsearch5.4集群(二)java API升级

Elasticsearch从1.7.1升到5.4.1后,java客户端遇到了一些错误。

unsorportedClassVersion

出现unsorportedClassVersion等类似问题。由于elasticsearch 5.0 以及以后版本 使用了Java lambda表达式等新特性,因此jdk 版本必须是1.8 以上版本(含1.8)

log4j相关异常

启动报错:

	Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/Logger
缺少包依赖,log4j-api是es5.0的强依赖
(https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/_log4j_2_logger.html)
(http://mvnrepository.com/artifact/org.elasticsearch/elasticsearch/5.4.2)
		
  
  
			
   
   
    
    org.elasticsearch
   
   
			
   
   
    
    elasticsearch
   
   
			
   
   
    
    5.4.1
   
   
		
  
  
		
  
  
		
   
   
    
    org.elasticsearch.client
   
   
			
   
   
    
    transport
   
   
			
   
   
    
    5.4.1
   
   
		
  
  
		
  
  
            
   
   
    
    org.apache.logging.log4j
   
   
            
   
   
    
    log4j-api
   
   
            
   
   
    
    2.8.2
   
   
        
  
  
        
  
  
            
   
   
    
    org.apache.logging.log4j
   
   
            
   
   
    
    log4j-core
   
   
            
   
   
    
    2.8.2
   
   
        
  
  

ES数据操作

client的构造方式有变更(参照官网:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html)
(批量插入:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-bulk.html)

import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;

import java.net.InetAddress;

import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

public class TestEsOperator {

    public static void main(String[] args) {
        TransportClient client = null;
        PreBuiltTransportClient preBuiltTransportClient = null;
        try {
            // 设置集群名称
            Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build();
            //Settings settings = Settings.builder().put("client.transport.sniff", true).build();
            // 创建client
            preBuiltTransportClient = new PreBuiltTransportClient(settings);
            client = preBuiltTransportClient
                    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.1.10"), 9300))
                    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.1.11"), 9300));

            // 搜索数据
            GetResponse response = client.prepareGet("test", "china", "1").execute().actionGet();
            // 输出结果
            System.out.println(response.getSourceAsString());
            
            // 插入数据
//            IndexResponse insertResponse = client.prepareIndex("test", "china").setSource(jsonBuilder()
//                    .startObject()
//                        .field("user", "kimchy")
//                        .field("msg", "trying out Elasticsearch").endObject())
//                    .get();
//             System.out.println(insertResponse);

             // 批量插入
             String indexName = "test";
             String type = "usa";
             BulkRequestBuilder bulkRequestBuilder = client.prepareBulk();
             for (int i = 1; i <= 5; i++){
                 bulkRequestBuilder.add(client.prepareIndex(indexName, type).setSource(jsonBuilder().startObject().field("msg", "msg---" + i).endObject()));
             }
             BulkResponse bulkResponse = bulkRequestBuilder.execute().actionGet();
             bulkRequestBuilder.request().requests().clear();
             if (bulkResponse.hasFailures()){
                 System.out.println("failure");
             }
             System.out.println("bulkResponse:" + bulkResponse);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (client != null) {
                // 关闭client
                client.close();
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值