elasticsearch超省存儲空間的配置

最近在研究elasticsearch 5.x版本的新特性的時候,偶爾翻到一篇es的測試文章,對于mapping的配置直接干掉了_all和_source選項。

對于_all選項的關(guān)閉我倒是可以理解,但是如果關(guān)掉_source選項的話,那返回數(shù)據(jù)就是一堆空的字典了。

所以看到這篇文章,我的第一感覺是: 臥草,還有這樣的騷操作?!這是完全是把es當(dāng)索引用了啊。

但是對于Hbase和mongodb存儲的數(shù)據(jù),這樣搞也沒什么壞處。通過索引拿到rowkey/_id, 然后直接從Hbase/mongodb里取數(shù)據(jù)。

這里我做了如下實驗,首先配置mapping:

mapping_body = {
    "article": {
        "_all": {"enabled": False},
        "_source": {"enabled": False},
        "properties": {
            # 各種字段。。。
        },
    },
}

然后把mongo中的數(shù)據(jù)導(dǎo)入到es中。一共666380條數(shù)據(jù),id為數(shù)據(jù)的唯一字段ac_no, 存儲空間占了18M。

首先進(jìn)行普通查詢:

search_result = es.search(index=index_name,
                          body=search_body, preference="primary")

由_source禁止掉了,所以返回的數(shù)據(jù)內(nèi)容都是空,所以只能拿到id。通過id再在mongodb中進(jìn)行$in查詢:

result = search_result[u'hits'][u'hits']
id_list = [int(i["_id"]) for i in result]
query = list(coll.find({"ac_no":{"$in":id_list}}, {"_id": 0}))

最后得到所有數(shù)據(jù)。要得到跟_source關(guān)閉前一樣的結(jié)果,還需要做點處理,保證結(jié)果排序的一致,這里不再贅述。

如果_source開啟,存儲同樣的數(shù)據(jù)需要28M,節(jié)省的空間還是比較顯著的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139
  • 很少寫技術(shù)博客,一是覺得自己技術(shù)有限,怕誤人子弟;二是文筆較差,比較排斥寫作之類的工作。話說不鍛煉,哪會有進(jìn)步呢,...
    奔跑的番茄醬閱讀 42,408評論 7 132
  • 歡迎訪問我的博客查看原文:http://wangnan.tech 注:文本整理自《ELKstack權(quán)威指南》 目錄...
    GhostStories閱讀 10,514評論 0 7
  • 此文是關(guān)于elasticsearch in action書部分重點讀書筆記。 Chapter 2 Diving i...
    shamumu閱讀 2,586評論 0 1
  • 醒了,好好生活吧。
    霜腴沐冬閱讀 194評論 0 0