ETJava Beta | Java    注册   登录
  • elasticsearch 索引的增删改查

    发表于 2024-04-07 18:16:09     阅读(175)     博客类别:Elasticsearch

    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
        }
    }