elasticsearch 索引的增删改查
注意:添加索引时 如果不指定ID 默认会生成字符串的ID
除添加外 其余对索引的操作均需要通过索引名称+索引类型+索引ID进行操作
索引增删改查案例
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;
/**
* @Author: ETJAVA
* @CreateTime: 2024-04-07 16:55
* @Description: TODO java接口连接elasticsearch 索引的增删改查
* @Version: 1.0
*/
public class IndexTest {
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(IndexTest.host), IndexTest.port));
}
// 关闭连接
@After
public void closeClient(){
if(client!=null){
client.close();
}
}
@Test
public void testIndex()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
}
/*
* 根据ID获取索引
* */
@Test
public void getIndex(){
// 根据索引名称+文档类型+文档ID获取文档中存放的索引
GetResponse getResponse = client.prepareGet("book", "java", "1").get();
System.out.println(getResponse.getSourceAsString());// 返回json格式数据
}
/*
* 根据ID修改索引
* */
@Test
public void updateIndex(){
// 定义要修改的数据
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name","Python");
jsonObject.addProperty("publishDate","2002-02-02");
jsonObject.addProperty("price",19.98);
// 修改索引
UpdateResponse updateResponse = client.prepareUpdate("book", "java", "1")
.setDoc(jsonObject.toString(), XContentType.JSON)
.get();
System.out.println("索引名称:"+updateResponse.getIndex());
System.out.println("文档类型:"+updateResponse.getType());
System.out.println("文档ID:"+updateResponse.getId());
System.out.println("当前实例的状态:"+updateResponse.status());// 创建为CREATED 修改成功为OK
}
/*
* 根据ID删除索引
* */
@Test
public void deleteIndex(){
DeleteResponse deleteResponse = client.prepareDelete("book", "java", "1").get();
System.out.println("索引名称:"+deleteResponse.getIndex());
System.out.println("文档类型:"+deleteResponse.getType());
System.out.println("文档ID:"+deleteResponse.getId());
System.out.println("当前实例的状态:"+deleteResponse.status());// 创建为CREATED 修改成功为OK
}
}