java建立elasticsearch索引
阿新 • • 發佈:2021-10-29
建立索引,欄位為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(); }