Elasticsearch 实战:Elasticsearch 文档全文检索
全文检索是 Elasticsearch 的核心功能之一,它允许用户对文本内容进行高效的模糊搜索、词组匹配、同义词处理、停用词过滤等操作。以下是如何进行文档全文检索的详细步骤:
**1. **全文匹配查询(Match Query)
最基础的全文检索查询是 match
查询,它会对输入的文本进行分词处理,并尝试在索引中找到包含这些词的文档。例如,查找标题中包含 “Elasticsearch” 的书籍:
GET /my_index/_search
{
"query": {
"match": {
"title": "Elasticsearch"
}
}
}
**2. **短语匹配查询(Match Phrase Query)
match_phrase
查询要求文本在文档中以精确的顺序出现。例如,查找标题中包含短语 “Elasticsearch in Action” 的书籍:
GET /my_index/_search
{
"query": {
"match_phrase": {
"title": "Elasticsearch in Action"
}
}
}
**3. **多字段全文匹配查询(Multi Match Query)
multi_match
查询允许在多个字段上执行相同的全文搜索。例如,查找标题或摘要中包含 “Elasticsearch” 的书籍:
GET /my_index/_search
{
"query": {
"multi_match": {
"query": "Elasticsearch",
"fields": ["title", "summary"]
}
}
}
**4. **模糊查询(Fuzzy Query)
fuzzy
查询允许对文本进行一定程度的拼写错误容忍。例如,查找标题接近 “Elasticsearch” 但允许最多一个字符错误的书籍:
GET /my_index/_search
{
"query": {
"fuzzy": {
"title": {
"value": "Elasticsearch",
"fuzziness": "AUTO"
}
}
}
}
**5. **通配符查询(Wildcard Query)和正则表达式查询(Regexp Query)
对于更为复杂的字符串匹配需求,可以使用 wildcard
或 regexp
查询:
-
通配符查询:使用星号
*
或问号?
作为通配符匹配文本。例如,查找标题以 “Elastic” 开头的书籍:GET /my_index/_search { "query": { "wildcard": { "title": "Elastic*" } } }
-
正则表达式查询:使用正则表达式匹配文本。例如,查找标题包含连续两个 “a” 字母的书籍:
GET /my_index/_search { "query": { "regexp": { "title": ".*aa.*" } } }
**6. **同义词处理(Synonyms)
要实现同义词搜索,通常需要配置分析器(Analyzer)使用同义词过滤器(Synonym Filter)。例如,定义一个包含同义词映射的分析器:
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"
}
}
}
}
然后使用配置了同义词分析器的字段进行查询:
GET /my_index/_search
{
"query": {
"match": {
"title": {
"query": "es",
"analyzer": "synonym_analyzer"
}
}
}
}
**7. **停用词过滤(Stop Words)
停用词是指在文本中频繁出现但对语义贡献较小的词汇,如英语中的 “the”, “a”, “an” 等。通过配置分析器使用停用词过滤器(Stop Words Filter),可以忽略这些词在搜索中的影响。配置方法与同义词类似,此处略。文章来源:https://www.toymoban.com/news/detail-847684.html
通过以上步骤,您可以利用 Elasticsearch 的全文检索功能进行各种复杂的文本搜索。结合业务需求,合理选择查询类型、配置分析器以及处理同义词、停用词等,可以显著提升搜索的准确性和用户体验。同时,关注全文检索的性能影响,适时进行查询优化。文章来源地址https://www.toymoban.com/news/detail-847684.html
到了这里,关于ElasticSearch 实战:ElasticSearch文档全文检索的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!