本文共 3858 字,大约阅读时间需要 12 分钟。
完成基本的配置以后,下面使用java client api进行简单的开发测试。
官方教程:
1. Maven 依赖
4.0.0 com.tom.es ElasticSearch0100 0.0.1-SNAPSHOT jar ElasticSearch0100 http://maven.apache.org UTF-8 4.1.0.RELEASE 1.5.10 1.6.1 1.8 4.12 1.8.1 junit junit ${junit.version} test org.elasticsearch elasticsearch 5.4.2 org.elasticsearch.client transport 5.4.3 org.apache.logging.log4j log4j-to-slf4j 2.8.2 org.slf4j slf4j-log4j12 1.7.24 test org.slf4j slf4j-api 1.7.24 org.elasticsearch.client x-pack-transport 5.4.3 官方那个repository好像不能用,所以我只加了依赖,在未启用x-pack的elasticsearch上,使用上面那个transport依赖即可,但是启用x-pack安全认证之后,需要使用x-pack-transport的依赖。
注意要添加下面的repository , 不然pom报错,找不到x-pack-transport
elasticsearch-releases https://artifacts.elastic.co/maven true false 2. 示例代码
package com.tom;import java.io.IOException;import java.net.InetSocketAddress;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.transport.InetSocketTransportAddress;import org.elasticsearch.common.xcontent.XContentBuilder;import org.elasticsearch.common.xcontent.XContentFactory;import org.elasticsearch.common.xcontent.XContentType;import org.elasticsearch.xpack.client.PreBuiltXPackTransportClient;import org.junit.After;import org.junit.Before;import org.junit.Test;public class TestXPackTransportClient { TransportClient client = null; @SuppressWarnings("resource") @Before public void before() { client = new PreBuiltXPackTransportClient(Settings.builder().put("cluster.name", "test_es")//集群名称 .put("node.name", "node-115")//加一个节点 .put("client.transport.sniff", true)//自动探测 .put("xpack.security.user", "elastic:密码")//xpack的用户 .build()) .addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress("ip或者域名", 9300)));//地址1,可以加多个 } @After public void after() { if (client != null) { client.close(); } } @Test public void testIndex() throws IOException { XContentBuilder contentBuilder = XContentFactory.jsonBuilder().startObject(); contentBuilder.field("id", "2017_06_01"); contentBuilder.field("name", "KingKong"); contentBuilder.field("director", "tom"); contentBuilder.field("year", "2017"); String json = contentBuilder.endObject().string(); IndexResponse resp = client.prepareIndex("movies", "film").setSource(json, XContentType.JSON).get(); System.out.println(resp.toString()); }}执行输入如下:
命令行查一下:OK的