zoukankan      html  css  js  c++  java
  • elasticsearch java api 使用elasticsearch 6.x.x版本,客户端使用5.6.10版本

    es的添加数据方法中 索引index字段不允许为大写字符串,必须全部为小写字符串

    public void bulkCreatIndex(){

    TransportClient client = es.getClient();

    int i = 1;

    // bulk单次批操作量
    final int BatchSize = 10000;
    BulkRequestBuilder bulkRequest = client.prepareBulk();
    // 遍历JSONArray,数据量庞大时,for循环比foreach循环效率更高一些
    for (i = 1; i <= jsonArray.size(); i++) {
    // setSource为上传的文本文档
    bulkRequest.add(client.prepareIndex(index.toLowerCase(), type).setSource(jsonArray.getJSONObject(i-1).toString()));
    // 每10000条数据执行一次bulk批量操作
    if (0 == i % BatchSize) {
    bulkRequest.execute().actionGet();
    bulkRequest = client.prepareBulk();//此处是bulkRequest执行完成之后会重新创建一个bulkRequest避免下次提交出现重复的数据,如果是一次性全部提交可以不用使用此处
    }
    }
    bulkRequest.execute().actionGet();
    bulkRequest = client.prepareBulk();

    }

    查询方法

    public void search(){

    Client client = esmanager.getClient();

    RangeQueryBuilder rangequerybuilder = QueryBuilders.rangeQuery("startdate").from(startdate).to(enddate);//建立查询是所使用条件startdate 从from  startdate开始至enddate结束,

    SearchRequestBuilder responsebuilder = client.prepareSearch(index).setTypes(type);//创建查询使用方法
    SearchResponse myresponse = responsebuilder
    .setQuery(QueryBuilders.boolQuery().must(rangequerybuilder))//添加查询条件
    .setFrom(from).setSize(size).addSort("startdate", SortOrder.ASC) // 分页 并且根据startdate进行排序
    .setExplain(true).execute().actionGet();
    SearchHits hits = myresponse.getHits();//searchhits 为查询结果相当于jdbc中的ResultSet
    for (int i = 0; i < hits.getHits().length; i++) {

    hits.getHits()[i].getSourceAsMap().get(key)

    }

     根据业务进行方法的修改,本方法制作一个demo参考为主。

  • 相关阅读:
    协议(五)-从电报机到智能手机
    协议(四)-通信发展史
    NDK历史版本
    android onKeyDown
    设计模式
    Android获取系统时间的多种方法
    USB 3.0规范中译本 第5章 机械结构
    ES6新特性
    08_SQLyog图形化工具介绍
    07_聚合函数,分组查询&limit关键字
  • 原文地址:https://www.cnblogs.com/zhuanxin/p/9582827.html
Copyright © 2011-2022 走看看