Elasticsearch 實(shí)戰(zhàn):Elasticsearch 文檔全文檢索
全文檢索是 Elasticsearch 的核心功能之一,它允許用戶對(duì)文本內(nèi)容進(jìn)行高效的模糊搜索、詞組匹配、同義詞處理、停用詞過(guò)濾等操作。以下是如何進(jìn)行文檔全文檢索的詳細(xì)步驟:
**1. **全文匹配查詢(Match Query)
最基礎(chǔ)的全文檢索查詢是 match
查詢,它會(huì)對(duì)輸入的文本進(jìn)行分詞處理,并嘗試在索引中找到包含這些詞的文檔。例如,查找標(biāo)題中包含 “Elasticsearch” 的書(shū)籍:
GET /my_index/_search
{
"query": {
"match": {
"title": "Elasticsearch"
}
}
}
**2. **短語(yǔ)匹配查詢(Match Phrase Query)
match_phrase
查詢要求文本在文檔中以精確的順序出現(xiàn)。例如,查找標(biāo)題中包含短語(yǔ) “Elasticsearch in Action” 的書(shū)籍:
GET /my_index/_search
{
"query": {
"match_phrase": {
"title": "Elasticsearch in Action"
}
}
}
**3. **多字段全文匹配查詢(Multi Match Query)
multi_match
查詢?cè)试S在多個(gè)字段上執(zhí)行相同的全文搜索。例如,查找標(biāo)題或摘要中包含 “Elasticsearch” 的書(shū)籍:
GET /my_index/_search
{
"query": {
"multi_match": {
"query": "Elasticsearch",
"fields": ["title", "summary"]
}
}
}
**4. **模糊查詢(Fuzzy Query)
fuzzy
查詢?cè)试S對(duì)文本進(jìn)行一定程度的拼寫(xiě)錯(cuò)誤容忍。例如,查找標(biāo)題接近 “Elasticsearch” 但允許最多一個(gè)字符錯(cuò)誤的書(shū)籍:
GET /my_index/_search
{
"query": {
"fuzzy": {
"title": {
"value": "Elasticsearch",
"fuzziness": "AUTO"
}
}
}
}
**5. **通配符查詢(Wildcard Query)和正則表達(dá)式查詢(Regexp Query)
對(duì)于更為復(fù)雜的字符串匹配需求,可以使用 wildcard
或 regexp
查詢:
-
通配符查詢:使用星號(hào)
*
或問(wèn)號(hào)?
作為通配符匹配文本。例如,查找標(biāo)題以 “Elastic” 開(kāi)頭的書(shū)籍:GET /my_index/_search { "query": { "wildcard": { "title": "Elastic*" } } }
-
正則表達(dá)式查詢:使用正則表達(dá)式匹配文本。例如,查找標(biāo)題包含連續(xù)兩個(gè) “a” 字母的書(shū)籍:
GET /my_index/_search { "query": { "regexp": { "title": ".*aa.*" } } }
**6. **同義詞處理(Synonyms)
要實(shí)現(xiàn)同義詞搜索,通常需要配置分析器(Analyzer)使用同義詞過(guò)濾器(Synonym Filter)。例如,定義一個(gè)包含同義詞映射的分析器:
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"synonym_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"synonym_filter"
]
}
},
"filter": {
"synonym_filter": {
"type": "synonym",
"synonyms": [
"es => Elasticsearch",
"search engine => SE"
]
}
}
}
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "synonym_analyzer"
}
}
}
}
然后使用配置了同義詞分析器的字段進(jìn)行查詢:
GET /my_index/_search
{
"query": {
"match": {
"title": {
"query": "es",
"analyzer": "synonym_analyzer"
}
}
}
}
**7. **停用詞過(guò)濾(Stop Words)
停用詞是指在文本中頻繁出現(xiàn)但對(duì)語(yǔ)義貢獻(xiàn)較小的詞匯,如英語(yǔ)中的 “the”, “a”, “an” 等。通過(guò)配置分析器使用停用詞過(guò)濾器(Stop Words Filter),可以忽略這些詞在搜索中的影響。配置方法與同義詞類(lèi)似,此處略。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-847684.html
通過(guò)以上步驟,您可以利用 Elasticsearch 的全文檢索功能進(jìn)行各種復(fù)雜的文本搜索。結(jié)合業(yè)務(wù)需求,合理選擇查詢類(lèi)型、配置分析器以及處理同義詞、停用詞等,可以顯著提升搜索的準(zhǔn)確性和用戶體驗(yàn)。同時(shí),關(guān)注全文檢索的性能影響,適時(shí)進(jìn)行查詢優(yōu)化。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-847684.html
到了這里,關(guān)于ElasticSearch 實(shí)戰(zhàn):ElasticSearch文檔全文檢索的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!