要做個元資料服務,包括儲存和查詢。元資料除了一些基本欄位外,其他格式是自由的,儲存輸入為乙個json
形式。比如下面是乙個檔案物件的元資料:
而下面這個是表示資料表的元資料:
由於輸入格式可變且以json
形式表示,雖然系統內有型別定義,說明了各個欄位的取值型別,但是一些如list
或者object
之類勉強使用mysql還是挺累得(需要手動編寫**對映到具體表上的字段)。這從本質上來說json
物件輸入是層次形式的,而關係型資料如mysql中的資料表式二維平面形式的。
如果單做key-value儲存的話使用mongodb感覺會非常好,完全的schema free,並且也支援一些基本的查詢。但是這個元資料服務還要提供乙個搜尋功能,通常實現這種搜尋功能都是比較煩人的事情,尤其是要支援那些模糊查詢。一般來說模糊查詢想在大規模資料集上取得比較好的查詢效率的話,都是需要建立倒排索引的。這方面mongodb也是支援的,不過後來使用的elasticsearch它的查詢功能就顯的比較弱。其實一開始我是拒絕的,感覺es就是個做搜尋的,相對來說不適合做類似業務儲存這類實時性要求比較高的儲存。不過它提供的搜尋過濾和聚集統計功能真的非常爽,再也不用費盡力去寫那些查詢組合的sql了。但在資料儲存方面確實比mongodb煩很多。
任何查詢要提供比暴力搜尋好的效能,都需要用到索引,es當然是不能例外的。而es中的名稱index
和我們所說的索引有些不同,它表示的是一系列欄位的索引集合,而不是不是某個欄位上的單個索引。因為es的儲存是面向文件的,它的index
意為對文件建立的索引。es的index
下面可以有不同的type
,對應不同的文件型別。
$ curl -xpost '10.214.208.138:9200/mass/demo' -d''
, "name" : ,
"version" : }}
}}}
$ curl -xdelete '10.214.208.138:9200/mass'
$ curl -xpost '10.214.208.138:9200/mass'
有些字段雖然是文字型別但我們卻不想使用分詞過程,因為只會進行一些精確查詢比如一些列舉字段。可以指定index:not_analyzed
。 誰在使用Elasticsearch
github github使用elasticsearch搜尋20tb的資料,包括13億的檔案和1300億行的 這個不用介紹了吧,碼農們都懂的,github在2013年1月公升級了他們的 搜尋,由solr轉為elasticsearch,目前集群規模為26個索引儲存節點和8個客戶端節點 負責處理搜尋請求...
ElasticSearch使用入門
es的安裝 啟動 cd.elasticsearch 2 4 3 bin elasticsearch bin elasticsearch d 後台執行 es安裝驗證 注意 預設啟動的時候es繫結的網路ip是本機127.0.0.1,只能通過這個ip訪問 兩種修改方式 1 修改config elastic...
ElasticSearch使用學習
elasticsearch是乙個基於lucene的搜尋服務,它通過倒排索引的方法提供了全文搜尋的能力。1 插入資料 elasticsearch中存放資料的為文件,有索引及型別名,如下插入兩文件 2 檢索文件 1 檢索id為1的文件 curl x get elasticsearch.in.netwa....