Elasticsearch增加X-Pack插件后如何使用Java客户端访问

Elasticsearch没有安装X-Pack插件时创建TransportClient只需要依赖

<dependency>
  <groupId>org.elasticsearch.client</groupId>
  <artifactId>transport</artifactId>
  <version>5.3.0</version>
</dependency>

然后使用

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

TransportClient client = new PreBuiltTransportClient(settings)
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));

// on shutdown
client.close();

就能连接上Elasticsearch了

但是在增加了X-Pack插件之后,由于Elasticsearch默认开启了xpack.security.enabled,如果还是使用原先的连接方式的话会抛权限异常,解决方式有两种

1.直接在elasticsearch.yml中增加配置

xpack.security.enabled=false

这样的话就还是可以使用原先的方式进行访问

2.使用x-pack-transport

<dependency>
  <groupId>org.elasticsearch.client</groupId>
  <artifactId>x-pack-transport</artifactId>
  <version>5.3.0</version>
</dependency>

注意这个依赖在maven中央仓库中找不到

需要在pom.xml中配置elastic的maven仓库

<repository>
  <id>elastic</id>
  <url>https://artifacts.elastic.co/maven</url>
  <releases>
     <enabled>true</enabled>
  </releases>
  <snapshots>
     <enabled>false</enabled>
  </snapshots>
</repository>

下载好依赖之后使用以下方式就能访问了

TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
        .put("cluster.name", "myClusterName")
        .put("xpack.security.user", "transport_client_user:changeme")
        ...
        .build())
    .addTransportAddress(new InetSocketTransportAddress("localhost", 9300))
    .addTransportAddress(new InetSocketTransportAddress("localhost", 9301));

 

转载于:https://my.oschina.net/u/2321575/blog/871705

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值