elasticsearch 创建索引
ElasticSearch客户端提供了多种方式的数据创建方式,包括json串,map,
内置工具;我们一般用json格式,借助json工具框架,比如gson ,json-lib,fastjson等等
这里我们使用junit做测试 因此需要添加junit依赖
添加Junit依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
创建索引案例
package com.et.connection;
import com.google.gson.JsonObject;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: ETJAVA
* @CreateTime: 2024-04-07 16:55
* @Description: TODO java接口连接elasticsearch 创建索引的几种方式
* @Version: 1.0
*/
public class CreateIndexTest {
private static String host="192.168.199.126";
private static int port=9300; // 程序连接的端口
private TransportClient client=null;
// 获取连接
@Before
public void getClient() throws UnknownHostException {
client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new TransportAddress(InetAddress.getByName(CreateIndexTest.host), CreateIndexTest.port));
}
// 关闭连接
@After
public void closeClient(){
if(client!=null){
client.close();
}
}
/**
* 创建索引 方式1 官方提供 直接添加
*/
@Test
public void testIndex1()throws Exception{
IndexResponse response =client.prepareIndex("twitter", "tweet", "1")
.setSource(XContentFactory.jsonBuilder()
.startObject()
.field("user", "Tom")
.field("postDate", new Date())
.field("message", "I have a good friend named Jerry.")
.endObject()
).get();
System.out.println("索引名称:"+response.getIndex());
System.out.println("类型:"+response.getType());
System.out.println("文档ID:"+response.getId()); // 第一次使用是1
System.out.println("当前实例状态:"+response.status());
}
/*
* 创建索引方式2 - json字符串封装数据
* */
@Test
public void testIndex2()throws Exception{
String json = "{" +
"\"user\":\"Tom\"," +
"\"postDate\":\"2013-01-30\"," +
"\"message\":\"I have a good friend named Jerry.\"" +
"}";
IndexResponse response =client.prepareIndex("weibo", "tweet")
.setSource(json,XContentType.JSON)
.get();
System.out.println("索引名称:"+response.getIndex());
System.out.println("类型:"+response.getType());
System.out.println("文档ID:"+response.getId()); // 第一次使用是1
System.out.println("当前实例状态:"+response.status());
}
/*
* 创建索引方式3 Map格式
* */
@Test
public void testIndex3()throws Exception{
Map<String, Object> json = new HashMap<String, Object>();
json.put("user","Tom");
json.put("postDate",new Date());
json.put("message","I have a good friend named Jerry.");
IndexResponse response =client.prepareIndex("tom", "tweet")
.setSource(json)
.get();
System.out.println("索引名称:"+response.getIndex());
System.out.println("类型:"+response.getType());
System.out.println("文档ID:"+response.getId()); // 第一次使用是1
System.out.println("当前实例状态:"+response.status());
}
/*
* 创建索引 方式4 json格式
* */
@Test
public void testIndex4()throws Exception{
// 定义要添加的数据
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name","Java");
jsonObject.addProperty("publishDate","2001-01-01");
jsonObject.addProperty("price",99.98);
// 添加索引 如果不指定ID 会自动生成一个字符串的ID
IndexResponse indexResponse = client.prepareIndex("book", "java", "1") // 定义索引的位置和id
.setSource(jsonObject.toString(), XContentType.JSON) // 添加值
.get();// 获取返回值
System.out.println("索引名称:"+indexResponse.getIndex());
System.out.println("文档类型:"+indexResponse.getType());
System.out.println("文档ID:"+indexResponse.getId());
System.out.println("当前实例的状态:"+indexResponse.status());// 创建为CREATED
}
}