關(guān)鍵詞:term, token, index, mapping index,mapping是理解ela原理的兩個(gè)關(guān)鍵概念。
首先,我們可以在kibana或curl命令行方式任意輸入關(guān)鍵字進(jìn)行全文檢索是基于ela內(nèi)部對(duì)信息存儲(chǔ)的方式。一種稱為倒排索引的方式(網(wǎng)上很多介紹這個(gè)概念,一看就懂)。了解了它又自然而然明白了文本的詞、句在被索引前需要經(jīng)過合適方式的處理。 elasticsearch對(duì)詞句的分析(三個(gè)過程組合而成) character filter(字符過濾:去除無用標(biāo)記html) tokenizer(分詞器:根據(jù)分隔符斷詞) token filter(表征過濾:轉(zhuǎn)換小寫,去詞,增加詞) 內(nèi)建分析器: 標(biāo)準(zhǔn)分析器 簡(jiǎn)單分析器 空格分析器 語言分析器
當(dāng)我們索引一個(gè)文檔時(shí),全文字段會(huì)被分析為單獨(dú)的詞用以創(chuàng)建倒排索引。當(dāng)我們?cè)谌淖侄嗡阉鲿r(shí),也要讓查詢字符串經(jīng)過同樣的分析流程處理,確保這些詞在索引中存在。
就是說,原文經(jīng)過分析后以合適的語法語言形式(比如大寫變小寫,復(fù)數(shù)變單數(shù))保存。而我們進(jìn)行查詢時(shí)的輸入也需要經(jīng)過這樣的轉(zhuǎn)換才能匹配。 為了保證document的每個(gè)字段field都能以正確的格式存儲(chǔ)索引,這就需要在創(chuàng)建索引時(shí)通過mapping定義,來規(guī)定不同字段的格式類型,如何被索引等。
當(dāng)Elasticsearch 在你的文檔中探測(cè)到一個(gè)新的字符串字段,它將自動(dòng)設(shè)置它為全文string字段并用standard分析器分析。 也許我們想要一個(gè)更適合這個(gè)數(shù)據(jù)的語言分析器。或者不做任何分析,只存儲(chǔ)確切值。為了達(dá)到這種效果,必須通過mapping人工設(shè)置這些字段。
“index參數(shù)控制字符串以何種方式被索引 analyzed: 分析并索引,會(huì)導(dǎo)致分詞,大小寫等變化 not_analyzed: 索引,但不分析,內(nèi)容和指定值完全一致 no:不索引, 不會(huì)被搜索到 類型說明 根據(jù)官方文檔
PUT /gb{ "mappings": { "tweet": { # <-- tweet對(duì)應(yīng) type "PRoperties": { "tweet": { # <-- 對(duì)應(yīng)具體的字段名(下面包含三個(gè)參數(shù)名type, index, analyzer) "type": "string", ## string類型默認(rèn)index值為analyzed "analyzer": "english" ## 指明使用英語分析器 }, "date": { "type": "date" }, "name": { "type": "string" }, "user_id": { "type": "long" } } } }}新聞熱點(diǎn)
疑難解答
圖片精選