elasticsearch连接java的开发流程
今天终于爬坑,把elasticsearch连接java测试跑通了,搜索那么多,走那么多弯路,哎!不说了, 自己仔细把走过的路记下来, 让自己和大家都少走弯路。
1、用maven项目搭建工程: 要注意的是, 你的elasticsearch是什么版本的, maven下载的那个jar也得对应该版本, 否则会报错:例如,我的是elasticsearch5.2.0,那么我的下载的版本也是5.2.0
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.2.0</version>
</dependency>
必须要一致哦,再次提醒。
pom文件的完整依赖
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<!-- 日志依赖 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
<scope>compile</scope>
</dependency>
<!-- Google json依赖 -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
<!-- elasticsearch依赖 -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
这些添加完成后,等待下载依赖完成, 就可以进行链接,创建索引了
其中要注意的是:logger报错也没事, host 在设置的时候,如果是连的本地的,就写成“127.0.0.1”,
如果需要远程访问,可以修改 Elastic 安装目录的config/elasticsearch.yml文件,去掉network.host的注释,将它的值改成0.0.0.0,然后重新启动 Elastic。
例如:
network.host: 0.0.0.0
下面把java连接
elasticsearch的代码贴出来,很简单:
package com.test;
import java.io.IOException;
import java.net.InetAddress;
import java.util.Date;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class EsTest {
/**
* // 服务器地址
*/
private static String host="127.0.0.1";
/**
* // 端口
*/
private static int port=9300;
/**
* 创建logger
*/
private Logger logger = LoggerFactory.getLogger(EsTest.class);
public static void main(String[] args) throws IOException{
/**
* 创建链接
*/
TransportClient client2 = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddresses(
new InetSocketTransportAddress(InetAddress.getByName(host),port));
System.out.println("连接信息:" + client2.toString());
IndexResponse response = client2.prepareIndex("msg", "tweet", "2").setSource(XContentFactory.jsonBuilder()
.startObject().field("userName", "张三")
.field("sendDate", new Date())
.field("msg", "你好李四")
.endObject()).get();
System.out.println("索引名称:" + response.getIndex() + "\n类型:" + response.getType()
+ "\n文档ID:" + response.getId() + "\n当前实例状态:" + response.status());
/**
* 关闭连接
*/
client2.close();
}
}
在这里, 我把引入的包名都贴上去, 这样在写的时候,可以直接复制上面的引入, 防止引入错误的jar。
执行后的结果:
这个实例就被创建好了, 可以看到的是实例状态是:created.
最后把elasticsearch的一个教程连接贴出来,他写的还是很详细的。
入门教程:https://www.cnblogs.com/ld-swust/p/9034941.html
索引创建、数据增删改查操作教程:https://www.cnblogs.com/sunny1009/articles/7887568.html