ElasticSearch 实战:ElasticSearch文档全文检索

这篇具有很好参考价值的文章主要介绍了ElasticSearch 实战:ElasticSearch文档全文检索。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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)

对于更为复杂的字符串匹配需求,可以使用 wildcardregexp 查询:

  • 通配符查询:使用星号 * 或问号 ? 作为通配符匹配文本。例如,查找标题以 “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),可以忽略这些词在搜索中的影响。配置方法与同义词类似,此处略。

通过以上步骤,您可以利用 Elasticsearch 的全文检索功能进行各种复杂的文本搜索。结合业务需求,合理选择查询类型、配置分析器以及处理同义词、停用词等,可以显著提升搜索的准确性和用户体验。同时,关注全文检索的性能影响,适时进行查询优化。文章来源地址https://www.toymoban.com/news/detail-847684.html

到了这里,关于ElasticSearch 实战:ElasticSearch文档全文检索的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全文检索-Elasticsearch-进阶检索

    本文记录谷粒商城高级篇的 Elasticsearch 进阶检索部分,续上之前记录的 Elasticsearch入门篇。 ES 支持两种基本方式检索 : 一个是通过使用 REST request URI 发送搜索参数(uri + 检索参数) 另一个是通过使用 REST request body 来发送它们(uri + 请求体) 请求体中写查询条件,语法: 示例

    2024年02月03日
    浏览(89)
  • ElasticSearch-全文检索

    https://www.elastic.co/cn/what-is/elasticsearch 全文搜索属于最常见的需求,开源的Elasticsearch是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。 维基百科、StackOverflow、Github都采用它。 Elastic的底层是开源库Lucene。但是,你没法直接用Lucene,必须自己写代码去调用

    2024年04月17日
    浏览(39)
  • elasticsearch全文检索

    传送门 best_fields 传送门 most_fields 当查询多字段包含相同文本以不同方式分词的时候此参数最有用, 传送门 cross_fields phrase和phrase_prefix 传送门 传送门

    2024年02月07日
    浏览(47)
  • ES(Elasticsearch 全文检索)

    数据量大的时候 索引失效 =查询性能低 功能比较弱 对文档的内容进行分词,对词条创建索引,记录词条所在的文档信息根据词条查询到文档的id 从而查到文档 文档:每一条数据就是一条文档 词条:文档按照语义分成的词语 正向索引 根据文档的id创建索引 查询词条必须先找

    2024年02月05日
    浏览(59)
  • 九.全文检索ElasticSearch经典入门-ElasticSearch映射修改

    这篇文章的内容是ElasticSearch映射修改,写这篇文章是有水友公司里面遇到了映射修改问题,我这里做了一个整理,希望对你有所帮助。 在ElasticSearch中一旦创建了映射想要进行修改是不被允许的。比如我这里有一个案例 上面创建了索引employee ,同时为其创建映射,指定了id和

    2024年02月05日
    浏览(59)
  • 全文检索-Elasticsearch-整合SpringBoot

    前面记录了 Elasticsearch 全文检索的入门篇和进阶检索。这次我们来讲下 Spring Boot 中如何整合 ES,以及如何在 Spring Cloud 微服务项目中使用 ES 来实现全文检索,来达到商品检索的功能。 检索服务单独作为一个服务,就称作 gulimall-search 模块。 点击 Next 勾选 Spring Web 依赖,点击

    2024年02月08日
    浏览(50)
  • ElasticSearch全文检索原理及过程

            ElasticSearch的搜索引擎中,每个 文档都有一个对应的文档 ID ,文档内容被表示为一系列的集合。例如文档 1 经过分词,提取了 20 个, 每个都会记录它在文档中出现的次数和出现位置 。那么,倒排索引就是 到文档   ID 的映射 ,每个关键

    2023年04月17日
    浏览(46)
  • 全文检索学习之ElasticSearch学习笔记

    在非关系型数据库中,数据是非结构化的,如果直接去查找效率极低,全文检索将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。索引就是从非结构化数据中提取出的然后重新组

    2023年04月11日
    浏览(53)
  • 7-Elasticsearch组合查询和全文检索

    Elasticsearch组合查询 组合查询–布尔查询 组合查询中的常用的查询方式:布尔查询。 它将多个查询条件组合在一起,并且将查询的结果和结果的评分组合在一起。 布尔查询是把多个子查询组合成一个布尔表达式,所有子查询之间逻辑关系是and,只有当一个文档满足布尔查询

    2024年02月04日
    浏览(45)
  • ElasticSearch:全文检索及倒排索引原理

    首先介绍一下结构化与非结构化数据: 结构化数据将数据具有的特征事先以结构化的形式定义好,数据有固定的格式或有限的长度。典型的结构化数据就是传统关系型数据库的表结构,数据特征直接体现在表结构的字段上,所以根据某一特征做数据检索很直接,速度也比较快

    2024年02月14日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包