ElasticSearch-數(shù)據(jù)類型差異

映射及分析

映射(mapping)機(jī)制用于進(jìn)行字段類型確認(rèn),將每個字段匹配為一種確定的數(shù)據(jù)類型(string,?number,?booleans,?date等)。

分析(analysis)機(jī)制用于進(jìn)行全文文本(Full Text)的分詞,以建立供搜索用的倒排索引。

當(dāng)在索引中處理數(shù)據(jù)時,我們注意到一些奇怪的事。有些東西似乎被破壞了,如:在索引中有12個tweets,只有一個包含日期2014-09-15,但是、查詢中的total?hits返回了所有的tweets,而針對date字段進(jìn)行年度查詢卻什么都不返回。

為什么我們的結(jié)果因查詢_all字段(譯者注:默認(rèn)所有字段中進(jìn)行查詢)或date字段而變得不同?

想必是因?yàn)槲覀兊臄?shù)據(jù)在_all字段的索引方式和在date字段的索引方式不同而導(dǎo)致。

讓我們看看Elasticsearch在對gb索引中的tweet類型進(jìn)行mapping(也稱之為模式定義[注:此詞有待重新定義(schema definition)])后是如何解讀我們的文檔結(jié)構(gòu):

Elasticsearch為對字段類型進(jìn)行猜測,動態(tài)生成了字段和類型的映射關(guān)系。返回的信息顯示了date字段被識別為date類型。_all因?yàn)槭悄J(rèn)字段所以沒有在此顯示,不過我們知道它是string類型。

date類型的字段和string類型的字段的索引方式是不同的,因此導(dǎo)致查詢結(jié)果的不同。

在Elasticsearch中每一種核心數(shù)據(jù)類型(strings, numbers, booleans及dates)以不同的方式進(jìn)行索引。

但是更大的區(qū)別在于確切值(exact values)(比如string類型)及全文文本(full text)之間。

這兩者的區(qū)別才真的很重要 - 這是區(qū)分搜索引擎和其他數(shù)據(jù)庫的根本差異。

確切值與全文將在下篇文章做解釋。

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

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

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