创建索引,字段为id、utc
创建索引
public static void makeIndex(String indexName,String typeName){ boolean existsIndex = isExistsIndex(indexName); if (existsIndex) { } else { TransportClient connection = null; List<String> result = new ArrayList<>(); try { connection = connectionPool.getConnection(); Settings build = Settings.builder().put("index.number_of_shards", 1) //设置分片数 .put("index.refresh_interval", "30s") //执行刷新操作的频率,索引更新多久才对搜索可见 .put("index.routing.allocation.total_shards_per_node", 3)//每个节点上允许最多分片数 .put("index.translog.sync_interval", "30s") //将数据同步到磁盘的频率 .put("index.number_of_replicas", 1) //每个主分片拥有的副本数 .put("index.max_result_window", "10000000") //一次最多获取多少条记录 .build(); CreateIndexResponse createIndexResponse = connection.admin().indices().prepareCreate(indexName).setSettings(build).execute().actionGet(); result.add("settings设置:" + createIndexResponse.isAcknowledged()); XContentBuilder xContentBuilder = XContentFactory.jsonBuilder().startObject() .field("dynamic", "false") .startObject("properties") .startObject("id").field("type", "keyword").field("index", "true").endObject() .startObject("utc").field("type", "date").field("format", "yyyy-MM-dd HH:mm:ss").endObject() .endObject() .endObject(); PutMappingRequest mappingRequest = Requests.putMappingRequest(indexName).type(typeName).source(xContentBuilder); AcknowledgedResponse acknowledgedResponse = connection.admin().indices().putMapping(mappingRequest).actionGet(); result.add("mapping设置:" + acknowledgedResponse.isAcknowledged()); } catch (Exception e) { logger2.error("makeIndex错误", e); } finally { if (connection != null) { connectionPool.releaseConnection(connection); } } } }
判断索引是否存在
public static boolean isExistsIndex(String indexName) { TransportClient connection = null; IndicesExistsResponse response; try { connection = connectionPool.getConnection(); response = connection.admin().indices().exists(new IndicesExistsRequest().indices(new String[]{indexName})).actionGet(); } catch (Exception e) { e.printStackTrace(); logger.error("错误", e); return true; } finally { if (connection != null) { connectionPool.releaseConnection(connection); } } return response.isExists(); }