elasticsearch javaapi

crud:

 

 

public class EScrud {

    public static void main(String[] args) throws Exception {
        Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build();
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));

//        createEmployee(client);
//        getEmployee(client);
//        updateEmployee(client);
//        deleteEmployee(client);
        client.close();
    }

    private static void createEmployee(TransportClient client) throws Exception {
        IndexResponse response = client.prepareIndex("company", "employee", "1")
                .setSource(XContentFactory.jsonBuilder()
                        .startObject()
                        .field("name", "jack")
                        .field("age", 27)
                        .field("position", "technique")
                        .field("country", "china")
                        .field("join_date", "2017-01-01")
                        .field("salary", 10000)
                        .endObject())
                .get();
        System.out.println(response.getResult());
    }

    private static void getEmployee(TransportClient client) throws Exception {
        GetResponse response = client.prepareGet("company", "employee", "1").get();
        System.out.println(response.getSourceAsString());
    }

    private static void updateEmployee(TransportClient client) throws Exception {
        UpdateResponse response = client.prepareUpdate("company", "employee", "1")
                .setDoc(XContentFactory.jsonBuilder()
                        .startObject()
                        .field("position", "technique manager")
                        .endObject())
                .get();
        System.out.println(response.getResult());
    }

    private static void deleteEmployee(TransportClient client) throws Exception {
        DeleteResponse response = client.prepareDelete("company", "employee", "1").get();
        System.out.println(response.getResult());
    }
}

 

根据条件分页查询:

private static void executeSearch(TransportClient client) {
   SearchResponse response = client.prepareSearch("company")
         .setTypes("employee")
         .setQuery(QueryBuilders.matchQuery("position", "technique"))
         .setPostFilter(QueryBuilders.rangeQuery("age").from(30).to(40))
         .setFrom(0).setSize(1)
         .get();
   
   SearchHit[] searchHits = response.getHits().getHits();
   for(int i = 0; i < searchHits.length; i++) {
      System.out.println(searchHits[i].getSourceAsString()); 
   }
}

 

 

public class EmployeeAggrApp {

   @SuppressWarnings({ "unchecked", "resource" })
   public static void main(String[] args) throws Exception {
      Settings settings = Settings.builder()
            .put("cluster.name", "elasticsearch")
            .build();
      
      TransportClient client = new PreBuiltTransportClient(settings)
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); 
      
      SearchResponse searchResponse = client.prepareSearch("company") 
            .addAggregation(AggregationBuilders.terms("group_by_country").field("country")
                  .subAggregation(AggregationBuilders
                        .dateHistogram("group_by_join_date")
                        .field("join_date")
                        .dateHistogramInterval(DateHistogramInterval.YEAR)
                        .subAggregation(AggregationBuilders.avg("avg_salary").field("salary")))
            )
            .execute().actionGet();
      
      Map<String, Aggregation> aggrMap = searchResponse.getAggregations().asMap();
      
      StringTerms groupByCountry = (StringTerms) aggrMap.get("group_by_country");
      Iterator<Bucket> groupByCountryBucketIterator = groupByCountry.getBuckets().iterator();
      while(groupByCountryBucketIterator.hasNext()) {
         Bucket groupByCountryBucket = groupByCountryBucketIterator.next();
         System.out.println(groupByCountryBucket.getKey() + ":" + groupByCountryBucket.getDocCount()); 
      
         Histogram groupByJoinDate = (Histogram) groupByCountryBucket.getAggregations().asMap().get("group_by_join_date");
         Iterator<Histogram.Bucket> groupByJoinDateBucketIterator = groupByJoinDate.getBuckets().iterator();
         while(groupByJoinDateBucketIterator.hasNext()) {
            Histogram.Bucket groupByJoinDateBucket = groupByJoinDateBucketIterator.next();
            System.out.println(groupByJoinDateBucket.getKey() + ":" +groupByJoinDateBucket.getDocCount()); 
         
            Avg avg = (Avg) groupByJoinDateBucket.getAggregations().asMap().get("avg_salary"); 
            System.out.println(avg.getValue()); 
         }
      }
      
      client.close();
   }
  }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值