elasticsearch-javaAPI查找与删除

在学习elasticsearch的时候结合kibana可视化,但是感觉现在的kibana做的还不好,好多模块还不成熟,所以为了需求就要自己开发可视化界面,对于elasticsearch的javaAPI的需求也就有了,但是官方文档上讲解的不是全面,并没有明确的指出查找和删除的使用,只是介绍了一下,这是我在网上找的javaAPIdoc,阅读自己研究出来的可行的代码实现,现在分享给大家。
1、elasticsearchUtil.java

public class ElasticsearchUtil {

//  private static final Logger LOGGER = Logger
//          .getLogger(ElasticsearchUtil.class);

    public static TransportClient getClient() {
        TransportClient client = null;
        try {
            client = TransportClient
                    .builder()
                    .build()
                    .addTransportAddress(
                            new InetSocketTransportAddress(InetAddress
                                    .getByName("192.168.20.247"), 9300));
            return client;
        } catch (Exception e) {
//          LOGGER.info("link elasticsearch failed !");

        }
        return client;
    }

    public static void close(TransportClient client) {
        if (client != null)
            client.close();
    }

}

2.searchBydate

public List<String> searchBydate(String index,Date date){
        TransportClient client = ElasticsearchUtil.getClient();
        List<String> hitcontents = new ArrayList<String>();
        JSONObject obj = null;

        SearchRequestBuilder sbuilder = client.prepareSearch(index);

        SearchResponse response = sbuilder.execute().actionGet();
        SearchHits hits = response.getHits();
//      System.out.println(response.get);

        SearchHit[] h = hits.getHits();
        for (SearchHit hit : h) {
//          System.out.println(hit.getId());
            obj = JSONObject.fromObject(hit.getSourceAsString());
//          System.out.println(hit.getSourceAsString());
            Date newdate = dateutil(obj.getString("@timestamp"));

            if (newdate.before(date))
                hitcontents.add(hit.getSourceAsString());
        }
        return hitcontents;
    }

3.searchforId

public List<String> searchforId(String index,Date date){

        TransportClient client = ElasticsearchUtil.getClient();
        List<String> hitid = new ArrayList<String>();
        JSONObject obj = null;

        SearchRequestBuilder sbuilder = client.prepareSearch(index);

        SearchResponse response = sbuilder.execute().actionGet();
        SearchHits hits = response.getHits();
//      System.out.println(response.get);

        SearchHit[] h = hits.getHits();
        for (SearchHit hit : h) {
//          System.out.println(hit.getId());
            obj = JSONObject.fromObject(hit.getSourceAsString());
//          System.out.println(hit.getSourceAsString());
            Date newdate = dateutil(obj.getString("@timestamp"));

            if (newdate.before(date))
//              hitcontents.add(hit.getSourceAsString());
                hitid.add(hit.getId());
        }
        return hitid;
    }

4、 dateutil

private Date dateutil(String date) {
        date = date.replace("Z", " UTC");
        SimpleDateFormat format = new SimpleDateFormat(
                "yyyy-MM-dd'T'HH:mm:ss.SSS Z");
        Date d = null;
        try {
            d = format.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return d;

    }

5、deleteBydate

public void deleteBydate(String index , String type , String id){

        TransportClient client = ElasticsearchUtil.getClient();
        DeleteRequestBuilder drBuilder = client.prepareDelete(index, type, id);

//      DeleteRequestBuilder drBuilder = client.prepareDeleteIndexedScript(scriptLang, id)

        DeleteResponse response = drBuilder.execute().actionGet();
        if(response.isFound())
            System.out.println("");
        else
            System.out.println("");
    }

6、delete—主要的删除函数

public static void delete(int time) {
        Delete delete =  new Delete();

        List<String> hitcontents = new ArrayList<String>();
        List<String> hitid = new ArrayList<String>();
        JSONObject obj = null;

        String index = PropertiesUtil.getProperty("index");
        Date d=new Date();   
        SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date(d.getTime() - time * 24 * 60 * 60 * 1000);

//      hitcontents = delete.searchBydate(index, date);
        hitid = delete.searchforId(index, date);

//      Iterator it = hitcontents.iterator();
        Iterator itid = hitid.iterator();

        while(itid.hasNext()){
//          System.out.println(it.next());
//          obj = JSONObject.fromObject(it.next());
//          String _index = obj.getString(index);
//          String _id = obj.getString("_id");
//          String _type = obj.getString("type");
            System.out.println(itid.next().toString());
            delete.deleteBydate(index , "syslog" , itid.next().toString()); 
        }

    }

这是自己实现的代码,就不细说了,有什么不懂得可以留言,大家一起讨论啊。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值