數(shù)據(jù)輸入: 文檔和索引 edit
Elasticsearch 是一個(gè)分布式文檔存儲(chǔ)颤霎,它并不是將數(shù)據(jù)存儲(chǔ)為行或者列,而是將復(fù)雜數(shù)據(jù)序列化為json文檔進(jìn)行存儲(chǔ)治拿。當(dāng)你在集群中配置了多個(gè)Elasticsearch 節(jié)點(diǎn)時(shí)摩泪,存儲(chǔ)的文檔通過(guò)集群進(jìn)行存儲(chǔ),并且可以通過(guò)任何一個(gè)節(jié)點(diǎn)實(shí)時(shí)訪問(wèn)劫谅。
當(dāng)一個(gè)文檔被存儲(chǔ)以后见坑,它將在1秒內(nèi)被索引和實(shí)現(xiàn)完全的查詢(?)。Elasticsearch 使用一種倒排索引的數(shù)據(jù)結(jié)構(gòu)支持快速的全文檢索捏检。倒排索引列出在任何文檔中出現(xiàn)的每個(gè)唯一單詞荞驴,并標(biāo)識(shí)每個(gè)單詞出現(xiàn)的所有文檔。
索引可以被視為一種優(yōu)化的文檔的集合贯城,并且每個(gè)文檔都是字段(field)的集合,是一種包含了你的數(shù)據(jù)的鍵值對(duì)熊楼。默認(rèn)情況下,Elasticsearch會(huì)為field中的所有數(shù)據(jù)制作索引能犯,并且每個(gè)索引話的字段都有自己獨(dú)特的鲫骗,優(yōu)化過(guò)的數(shù)據(jù)結(jié)構(gòu)。例如:文本數(shù)據(jù)被存儲(chǔ)為倒排索引踩晶,數(shù)字和地理信息字段被存儲(chǔ)為 BKD 樹(shù)形結(jié)構(gòu)(?)执泰。這種使用per-field數(shù)據(jù)結(jié)構(gòu)的來(lái)組裝(?)和返回搜索結(jié)果的能力讓Elasticsearch 超級(jí)快。
This default behavior makes it easy to index and explore your data—?just start indexing documents and Elasticsearch will detect and map booleans, floating point and integer values, dates, and strings to the appropriate Elasticsearch datatypes.
Elasticsearch也有無(wú)模式的能力渡蜻,這就意味著無(wú)需配置如何處理文檔中出現(xiàn)的所有可能出現(xiàn)的field(這個(gè)好像是專有名詞一類的東西)术吝,文檔就可以被索引化。當(dāng)動(dòng)態(tài)映射被開(kāi)啟之后茸苇,Elasticsearch可以自動(dòng)檢測(cè)并添加新的field到索引中排苍。這種默認(rèn)行為讓Elasticsearch 可以非常容易的索引和瀏覽你的數(shù)據(jù)——只需開(kāi)始索引文檔,Elasticsearch就可以將檢測(cè)并將Boolean, Float, Integer, Date和String映射到相應(yīng)的Elasticsearch中合適的數(shù)據(jù)類型学密。
但是淘衙,最終還是你本人比ElasticSearch更了解你的數(shù)據(jù)和如何正確的使用。你可以自己定義規(guī)則來(lái)控制動(dòng)態(tài)映射腻暮,明確的定義映射(?)來(lái)控制field如何被存儲(chǔ)和索引幔翰。
定義你自己的映射規(guī)則可以讓你
- 區(qū)分full-text字符串字段和精確值字符串字段
- 執(zhí)行特定語(yǔ)言的文本分析(中英文的區(qū)分漩氨,中文使用IK分詞器?遗增?)
- 優(yōu)化字段用于部分匹配
- 使用自定義的日期格式
- Use data types such as
geo_point
andgeo_shape
that cannot be automatically detected - 使用類似
geo_point
andgeo_shape
的這種無(wú)法被西東檢測(cè)的數(shù)據(jù)類型
通常相同的字段,為了不同的目的款青,使用不同的方式進(jìn)行索引是非常有用的做修。例如,您可能希望將字符串field索引為全文搜索的文本字段和用于排序或聚合數(shù)據(jù)的關(guān)鍵字字段抡草∈渭埃或者,你也可以選擇使用不止一種語(yǔ)言分析器來(lái)處理包含用戶輸入的字符串字段的內(nèi)容康震。
The analysis chain that is applied to a full-text field during indexing is also used at search time. When you query a full-text field, the query text undergoes the same analysis before the terms are looked up in the index.
在索引的時(shí)候應(yīng)用于全文字段(full-text field)的分析鏈燎含,在搜索的時(shí)候也被使用。當(dāng)你查詢?nèi)淖侄螘r(shí)腿短,查詢文本會(huì)在索引中查找之前進(jìn)行相同的分析屏箍。
【就是說(shuō)查詢文本 和 文檔建立的索引 執(zhí)行的是相同的規(guī)則,完全匹配橘忱,提高命中率高赴魁,這么理解我覺(jué)得沒(méi)毛病?】