掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流
當(dāng)談到搜索和分析大規(guī)模數(shù)據(jù)時(shí),Elasticsearch 是一個(gè)非常強(qiáng)大的開(kāi)源搜索和分析引擎。在本講解中,我們將探討 Elasticsearch 中的映射與分析的概念、字段類(lèi)型、自定義映射、分析器與標(biāo)記器,以及分析過(guò)程和詞項(xiàng)查詢(xún)的相關(guān)內(nèi)容。

開(kāi)州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!
在 Elasticsearch 中,映射(mapping)用于定義文檔的數(shù)據(jù)結(jié)構(gòu)和字段的類(lèi)型。它告訴 Elasticsearch 如何解析和索引文檔,以便進(jìn)行快速和有效的搜索。映射還用于定義字段的分析(analysis)方式,即將文本分解為詞項(xiàng)(terms)的過(guò)程。分析過(guò)程可以通過(guò)分析器(analyzer)和標(biāo)記器(tokenizer)來(lái)自定義。
在 Elasticsearch 中,映射定義了索引中的字段類(lèi)型。字段類(lèi)型決定了字段如何被存儲(chǔ)和索引,以及對(duì)字段的搜索行為進(jìn)行了哪些優(yōu)化。一些常見(jiàn)的字段類(lèi)型包括:
以下是一個(gè)示例,展示如何定義一個(gè)具有不同字段類(lèi)型的映射:
PUT /my_index
{
"mappings": {
"properties": {
"title": {
"type": "text"
},
"category": {
"type": "keyword"
},
"created_at": {
"type": "date"
},
"views": {
"type": "integer"
},
"location": {
"type": "geo_point"
},
"tags": {
"type": "text"
},
"author": {
"type": "object",
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "integer"
}
}
}
}
}
}在 Elasticsearch 中,我們可以根據(jù)特定需求自定義映射,以更精確地控制字段類(lèi)型和分析器等設(shè)置。自定義映射可以幫助我們優(yōu)化搜索和分析過(guò)程,以及提高結(jié)果的準(zhǔn)確性。
下面是一個(gè)示例,展示如何自定義映射及其相關(guān)設(shè)置:
PUT /my_index
{
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "english",
"search_analyzer": "english_search"
}
}
},
"settings": {
"analysis": {
"analyzer": {
"english": {
"type": "standard",
"stopwords": ["a", "an", "the"]
},
"english_search": {
"type": "standard",
"stopwords": ["a", "an", "the"],
"max_token_length": 5
}
}
}
}
}在上述示例中,我們定義了一個(gè)名為 my_index 的索引,并在映射中創(chuàng)建了一個(gè)名為 content 的文本字段。該字段使用了自定義的分析器和搜索分析器。分析器 english 使用了標(biāo)準(zhǔn)分析器,并定義了常見(jiàn)英文停用詞(stopwords),如 "a"、"an" 和 "the"。搜索分析器 english_search 也使用了標(biāo)準(zhǔn)分析器,但還定義了一個(gè) max_token_length 參數(shù),用于限制分析器輸出的最大詞項(xiàng)長(zhǎng)度。
通過(guò)自定義映射和分析器設(shè)置,我們可以控制文本字段的分析過(guò)程,包括詞項(xiàng)化、停用詞處理、大小寫(xiě)轉(zhuǎn)換等。這樣可以確保搜索和分析的準(zhǔn)確性和一致性,提高搜索結(jié)果的質(zhì)量。
請(qǐng)注意,以上示例僅展示了自定義映射和分析器的基本用法,實(shí)際應(yīng)用中可能需要根據(jù)具體情況進(jìn)行更詳細(xì)的配置和調(diào)整。
在 Elasticsearch 中,分析器(analyzer)和標(biāo)記器(tokenizer)是映射和文本分析的核心組件。分析器負(fù)責(zé)將文本字段分解為詞項(xiàng)(terms),而標(biāo)記器是分析器中的一部分,負(fù)責(zé)將文本分解成單個(gè)的標(biāo)記。
Elasticsearch 提供了許多內(nèi)置的分析器和標(biāo)記器,例如:
下面是一個(gè)示例,展示如何使用自定義分析器和標(biāo)記器:
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"custom_analyzer": {
"tokenizer": "standard",
"filter": ["lowercase", "my_stopwords"]
}
},
"filter": {
"my_stopwords": {
"type": "stop",
"stopwords": ["and", "or", "but"]
}
}
}
},
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "custom_analyzer"
}
}
}
}在上述示例中,我們定義了一個(gè)名為 custom_analyzer 的自定義分析器,它使用了 standard 標(biāo)記器進(jìn)行分詞,并應(yīng)用了兩個(gè)過(guò)濾器:lowercase 將詞項(xiàng)轉(zhuǎn)換為小寫(xiě),my_stopwords 根據(jù)自定義停用詞列表過(guò)濾詞項(xiàng)。停用詞過(guò)濾器可以幫助排除常見(jiàn)的無(wú)意義詞匯,如 "and"、"or" 和 "but"。
通過(guò)自定義分析器和標(biāo)記器,我們可以根據(jù)需求進(jìn)行更精細(xì)的文本處理,例如去除停用詞、應(yīng)用同義詞擴(kuò)展、使用正則表達(dá)式進(jìn)行詞項(xiàng)切分等。
在 Elasticsearch 中,分析過(guò)程將文本字段分解為一系列詞項(xiàng),這些詞項(xiàng)將用于構(gòu)建倒排索引,以支持高效的全文搜索。當(dāng)執(zhí)行搜索時(shí),查詢(xún)字符串也會(huì)經(jīng)過(guò)相同的分析過(guò)程進(jìn)行處理,以便與索引中的詞項(xiàng)匹配。
以下是一個(gè)示例,展示如何進(jìn)行詞項(xiàng)查詢(xún):
GET /my_index/_search
{
"query": {
"match": {
"content": "example text"
}
}
}在上述示例中,我們執(zhí)行了一個(gè)詞項(xiàng)查詢(xún),搜索包含 "example" 和 "text" 詞項(xiàng)的文檔。查詢(xún)字符串將通過(guò)與映射中指定的相同分析器進(jìn)行分析和處理,以便與索引中的詞項(xiàng)進(jìn)行匹配。這樣可以確保查詢(xún)字符串與文檔內(nèi)容的分析方式一致,從而獲得準(zhǔn)確的搜索結(jié)果。
在執(zhí)行詞項(xiàng)查詢(xún)時(shí),Elasticsearch會(huì)使用倒排索引來(lái)快速定位匹配的文檔。倒排索引是一種以詞項(xiàng)為鍵,將詞項(xiàng)與文檔關(guān)聯(lián)起來(lái)的索引結(jié)構(gòu),它可以快速找到包含特定詞項(xiàng)的文檔。
通過(guò)詞項(xiàng)查詢(xún),我們可以進(jìn)行全文搜索、短語(yǔ)搜索、前綴搜索等。此外,Elasticsearch還提供了各種查詢(xún)類(lèi)型和過(guò)濾器,以支持更高級(jí)的搜索需求。
在本講解中,我們?cè)敿?xì)介紹了 Elasticsearch 中的映射與分析相關(guān)的概念。我們探討了字段類(lèi)型的定義和使用,展示了如何自定義映射、分析器和標(biāo)記器,以及如何進(jìn)行詞項(xiàng)查詢(xún)。這些概念和技術(shù)可以幫助我們優(yōu)化搜索和分析過(guò)程,從而提高 Elasticsearch 的效率和準(zhǔn)確性。
請(qǐng)注意,示例中的代碼片段僅用于演示目的,實(shí)際應(yīng)用中可能需要根據(jù)具體需求進(jìn)行適當(dāng)調(diào)整和,建議查閱 Elasticsearch 官方文檔和相關(guān)資源以獲取更詳細(xì)的指導(dǎo)和實(shí)際示例。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流