Elasticsearch restful api

     之前看了,通过Elasticsearch的客户端调用,发现这样的方式繁琐所,那个客户端可能存在着版本的问题,所以显示要是能屏蔽掉这种差异性就是一个好的方案。发现用restful

api 完美解决了这个问题。而且调用起来比较简单。

      先介绍一下这些api:

      创建索引:xpost : http://ip:端口/索引名/?pretty    

     返回值为:{ "acknowledged" : true }  表示创建成功,如果创建过:{ "error" : "IndexAlreadyExistsException[[索引名] already exists]","status" : 400} 就报错

      查询:http://ip:端口/索引名/_search?q=*&pretty    json参数:{"query":{"match_all":{}}}这个是查询全部。其他的自己查了。这个适合复杂查询,简单查询用:、

     http://ip:端口/索引名/_search?字段名=字段值,这样就可以查询到合适的结果。如果不加字段酒是查询全部。

     删除索引:delete    http://ip:端口/索引名/?pretty           这样就可以删了:返回值为:{ "acknowledged" : true} , 如果索引不存在,返回{ "error" : "IndexMissingException[[索引名] missing]","status" : 404}

     给索引添加数据:put     http://ip:端口/索引名/type/索引id   把数据放上,就可以把数据添加到 elasticsearch中。返回值为{"_index":"索引名","_type":"type值","_id":"索引id","_version":1,"created":true}   可以通过判断created的值,就可以判断出是否创建成功。创建失败就是false.,也即是更新操作了。

   删除 数据:delete   http://ip:端口/索引名/type/索引id/      返回值:{"found":true,"_index":"索引名","_type":"type值","_id":"索引id","_version":2}, found为true表示删除成功,false表示该数据不存在。

下面就是一些例子:

public static void main(String[] args) throws ClientProtocolException, IOException {

       
long timestart=System.currentTimeMillis();
httpClient = new DefaultHttpClient();  
String url="http://localhost:9200/user/_search?id=1";
method = new HttpPost(url); 
     
         method.setHeader("Accept", "application/json"); 
         Map map=new HashMap<String,Object>();
         map.put("match_all",new HashMap<String,Object>() );
         Map newmap=new HashMap<String,Object>();
         newmap.put("query", map);
         ObjectMapper mapper = new ObjectMapper();
         String result=mapper.writeValueAsString(newmap);
         System.out.println(result);
         
         method.setEntity(new StringEntity(result)); 

         //搜索
         HttpResponse response = httpClient.execute(method);  
         int statusCode = response.getStatusLine().getStatusCode();  
         


         
         if (statusCode != HttpStatus.SC_OK) {  
             System.out.println("Method failed:" + response.getStatusLine());  
           
         }  
         
         String body = EntityUtils.toString(response.getEntity());  
         System.out.println("body:======="+body);
         System.out.println("time="+(System.currentTimeMillis()-timestart));
         
         
         method = new HttpPost("http://localhost:9200/shop/?pretty");
       
         method.setHeader("Accept", "application/json"); 
       //创建索引
         response = httpClient.execute(method);  
         String out=EntityUtils.toString( response.getEntity());
         ObjectMapper obm=new ObjectMapper();
         Map mapout=new HashMap<String,Object>();
         mapout= obm.readValue(out, Map.class);
         Set<String> keyset=mapout.keySet();
         for (String string : keyset) {
System.out.println("key====="+string);
}
         System.out.println("out======++++"+out);
         //删除索引
        HttpDelete methoddelete = new HttpDelete("http://localhost:9200/shop/?pretty");
        response=  httpClient.execute(methoddelete);
        result=EntityUtils.toString( response.getEntity());
        System.out.println("delete==========="+result);
        
        String input="{\"Id\":1,\"Name\":\"ipad5\",\"prodDesc\":\"比你想的更强大\",\"show\":3}";
        String puturl="http://localhost:9200/user/employee/4";

       //添加数据
        HttpPut put=new HttpPut(puturl);
        put.setEntity(new StringEntity(input));
        response=  httpClient.execute(put);
        String in=EntityUtils.toString(response.getEntity());
        System.out.println("in=============="+in);
        
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值