使用Java API 操作ElasticSearch

ES本身是Java做的,对Java的支持很好,ES提供了功能强大、易用的Java API,所有的ES功能都可以使用客户端对象来执行,所有操作在本质上完全异步的。此外,客户机上的操作可以单独执行,也可以批量执行。

注意,Java客户端和服务器端的ES尽量版本一致。

 

引入pom文件

<dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>6.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>6.2.3</version>
        </dependency>

 

 

创建一个工具类

import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import java.net.InetAddress;

//简化ES操作的工具类
public class ESHelper {

    public static final String indexName="indextest";//索引名
    public static final String documentType="product";//索引类型
    public static TransportClient client=null;

    static {
        //ES配置
        Settings settings=Settings.builder().put("cluster.name","my-es")//集群名称
                .put("client.transport.sniff",true)//是否自动检测
                .build();
        try{

            client=new PreBuiltTransportClient(settings).
                    addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.188.8")//es 主机地址
                            ,9300));//端口号
        }catch (Exception e){
            e.printStackTrace();
        }

    }

    public static TransportClient getClient() {
        return client;
    }
}

 

创建索引

//创建索引库
    @Test
    public void createIndex(){
        CreateIndexResponse response = ESHelper.getClient().admin()//admin权限
                .indices()//索引集合
                .prepareCreate(ESHelper.indexName)//索引名
                .execute().actionGet();//请求
        if(response.isAcknowledged()){
            System.out.println("add Index OK");
        }else{
            System.out.println("add Index NO");
        }
    }

 

 

添加文档

//添加文档
    @Test
    public void addDocument(){
        Book book=new Book(2,"死亡","毕淑敏",new Date());//创建一个Book对象
        Map<String,Book> map=new HashMap<>();//创建一个Map将Book对象传进去
        map.put(book.getId().toString(),book);
        IndexResponse response = ESHelper.getClient().prepareIndex(ESHelper.indexName, ESHelper.documentType).setId(book.getId().toString()).setSource(map).get();
        System.out.println(response.getResult());
    }

 

获取数据

//获取数据
    @Test
    public void getDocument(){
        GetResponse documentFields = ESHelper.getClient().prepareGet(ESHelper.indexName, ESHelper.documentType, "1").get();
        System.out.println(documentFields.getSourceAsString());
    }

 

修改数据

//修改数据
    @Test
    public void updateData(){
        Book book=new Book(1,"艰难的抉择","卡莉",new Date());
        Map<String,Book> map=new HashMap<>();
        map.put(book.getId().toString(),book);
        UpdateRequest updateRequest=new UpdateRequest();
        updateRequest.index(ESHelper.indexName);//索引库
        updateRequest.type(ESHelper.documentType);//类型
        updateRequest.id("1");//修改的id
        updateRequest.doc(map);
        ESHelper.getClient().update(updateRequest).actionGet();
        System.out.println("Update OK");
    }

 

 

删除索引

//删除数据
    @Test
    public void deleteData(){

        ESHelper.getClient().prepareDelete(ESHelper.indexName,ESHelper.documentType,"1").get();
    }

 

 

删除数据

//删除索引
    @Test
    public void deleteIndex(){
        ESHelper.getClient().admin().indices().delete(new DeleteIndexRequest("test"));
        System.out.println("DELETE OK");
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木易学长~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值