1. 程式人生 > 其它 >java建立elasticsearch索引

java建立elasticsearch索引

建立索引,欄位為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();
    }