終于寫完了定時(shí)器自動創(chuàng)建mongo集合的索引!

1. 最近隨著日志數(shù)量的急劇增長,很多透傳查詢效率非常低。不得不考慮趕緊加上對查詢字段的索引來優(yōu)化透傳效率。

2. 出問題的時(shí)候我都在想,還不如用以前的文件形式的日志呢!那時(shí)候,還可以用ag,ack加快透傳的速度。用了mongo怎么沒有發(fā)揮出它的效果呢!

3. 為了不影響線上業(yè)務(wù),趕緊把mongo索引的文檔又過了幾遍,然后在測試機(jī)上使用mongo shell試試效果:

db.click_20170605.ensureIndex({clickid:1},{background:true,sparse:true})

4. linux上的mongo版本稍低,所以用的是ensureIndex().完成后,使用db.click_20170605.getIndexes()顯示指定集合上的所有索引(最大64個(gè))

5. db.click_20170605.totalIndexSize()顯示索引占用空間大小。 db.system.indexes.find()顯示系統(tǒng)中所有的索引(默認(rèn)包含所有集合的_id字段上的索引,索引學(xué)會過濾掉!)

比如這樣過濾默認(rèn)的索引:

db.system.indexes.find({key:{$ne:{"_id":1}}})

或者這樣:

db.system.indexes.find({name:{$ne:"_id_"}})

6. 核心代碼如下(設(shè)置索引字段和options:background等):

DB db = mongoClient.getDB(dbname);

for(String coll:collectionname) {

DBCollection getCollection=db.getCollection(coll);

BasicDBObject field = new BasicDBObject("clickid", 1);

BasicDBObject ops = new BasicDBObject("background",true).append("sparse",true);

getCollection.createIndex(field,ops);

//getCollection.insert((DBObject)com.mongodb.util.JSON.parse(inputjson));

System.out.println("\n index on? " + coll + " created "? );

}

7. 完整嵌入代碼如下:

MongoClient mongoClient = null;

try {

// To connect to mongodb server

mongoClient = new MongoClient( "172.17.0.6" , 27017 );

// Now connect to your databases

@SuppressWarnings("deprecation")

DB db = mongoClient.getDB(dbname);

for(String coll:collectionname) {

DBCollection getCollection=db.getCollection(coll);

BasicDBObject field = new BasicDBObject("clickid", 1);

BasicDBObject ops = new BasicDBObject("background",true).append("sparse",true);

getCollection.createIndex(field,ops);

//getCollection.insert((DBObject)com.mongodb.util.JSON.parse(inputjson));

System.out.println("\n index on? " + coll + " created "? );

}

//mongoClient.close();

} catch(Exception e) {

System.err.println( e.getClass().getName() + ": " + e.getMessage() );

}

finally {

if(mongoClient!=null) {

mongoClient.close();

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容