Elasticsearch中倒排索引、分词器、DSL语法使用介绍

这篇具有很好参考价值的文章主要介绍了Elasticsearch中倒排索引、分词器、DSL语法使用介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍓 简介:java系列技术分享(👉持续更新中…🔥)
🍓 初衷:一起学习、一起进步、坚持不懈
🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏
🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝

🍓 更多文章请点击
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

简介及安装请查看这篇:Elasticsearch简介及安装

Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

一、 正向索引

基于文档id创建索引,查询时先找文档,然后判断是否包含词条

正向索引(也称为“文档索引”或“内容索引”)是将文档ID与文档内容、单词相关联的关系。这意味着可以通过文档ID获取文档的内容。在构建索引时,它的结构相对简单,建立方便且易于维护。然而,在查询时需要对所有文档进行扫描,以确保没有遗漏,这会使得检索时间大大延长,检索效率低下。

数据库Mysql采用正向索引,例如:给表中的id建立索引,如下图所示
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

二、 倒排索引

对文档内容分词,对词条创建索引,并记录词条所在文档信息,查询时先根据词条查询文档id,然后获取文档

倒排索引是单词到文档ID的关联关系。也就是说,通过单词可以搜索到对应的文档ID。倒排索引是搜索引擎的核心,因为它们允许我们根据关键字快速找到相关的文档。倒排索引主要由两个部分组成:单词词典(Trem Dictionary)和倒排列表(Posting List)。单词词典记录了所有的文档分词后的结果,而倒排列表则记录了单词对应文档的集合。此外,倒排索引还包含位置(Position)和偏移(Offset)信息,用于词语搜索和高亮显示。

名词介绍:

  • 文档(document): 每条数据就是一个文档
  • 词条(term): 文档按照语义分成的词语

Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

三、 正向索引和倒排索引的区别

正向索引:

  • 优点:

    • 可以给多个字段创建索引
    • 根据索引字段搜索,排序速度非常快
  • 缺点:

    • 根据非所以呢字段,或者索引字段中的部分词条查找时,只能全表扫描。

倒排索引

  • 优点:

    • 根据词条搜索,模糊搜索时速度非常快
  • 缺点:

    • 只能给词条创建索引,而不是字段
    • 无法根据字段做排序

三、与Mysql的概念对比

Mysql: 擅长事务类型操作,可以确保数据的安全性和一致性
Elasticsearch:擅长海量数据的搜索,分析,计算
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

四、分词器(粗细力度拆分)

4.1 原始分词器

Elasticsearch

  • 创建倒排索引时需要对文档分词;`
  • 在搜索时,需要对用户输入内容分词`
  • 但是默认的分词规则 对中文处理并不好。 (如下)
    我们希望按照词分
    Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

4.2 IK分词器

处理中文分词,一般会使用IK分词器GitHub地址:https://github.com/medcl/elasticsearch-analysis-ik

Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎
ik_smart :最少切分,粗粒度
ik_max_word :最细切分,细粒度Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

4.3 安装IK分词器

4.3.1 在线安装较慢

	# 进入容器内部
	docker exec -it es /bin/bash
	
	# 在线下载并安装
	./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
	
	#退出
	exit
	#重启容器
	docker restart es
	# 查看es日志
	docker logs -f es

4.3.2 离线安装ik插件推荐

因为根据上篇Elasticsearch简介及安装中我们知道,我们的插件数据卷为:es-plugins

  1. 因此,通过下面命令查看:查看数据卷目录
    docker volume inspect es-plugins
    
  2. 目录被挂载到了:/var/lib/docker/volumes/es-plugins/_data 这个目录中。
  3. 将下载的ik分词器文件(GItHub地址中下载或者到我的主页中的资源进行下载)放到该目录下
  4. 重启容器
    # 重启容器
    docker restart es
    # 查看es日志
    docker logs -f es
    

4.4 ik分词器测试

ik_smart 分词器最少切分,粗粒度
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎ik_max_word 分词器最细切分,细粒度
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

4.5 IK分词器–拓展词库

比如我想实现让上图中的text字段的空间文化分成一个词语

首先我们来看下ik分词器的词库如何配置

  1. 和上文中一样先查看ik分词器安装的位置

    docker volume inspect es-plugins
    
  2. 打开IK分词器config目录:
    Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

  3. 只需要修改一个ik分词器目录中的config目录中的ilAnalyzer.cfg.xml文件即可
    Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎`

  4. 拓展词典和停止词典在当前配置文件的所在目录 在ext.dic文件中(没有新建即可),添加想要的拓展词语即可;

    停止词典同理一样
    Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

    1. 最后重启es
    docker restart es
    
    # 查看 日志
    docker logs -f es
    
    1. 测试发现成功
      Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

五、mapping属性介绍

Mapping(映射)是索引文档的约束,例如:字段数据类型约束,等等
文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/7.17/getting-started.html

Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

六、 索引库操作(类似表操作)

6.1 创建索引库

上述有介绍其含义,例如:type为text可分词,keyword精确值也就是不可分词

put /student
{
  "mappings": {
    "properties": {
      "info": {
        "type": "text",
        "analyzer": "ik_smart"
      },
      "email": {
        "type": "keyword",
        "index": false
      },
      "name": {
        "properties": {
          "firstName": {
            "type": "keyword"
          },
          "lastName": {
            "type": "keyword"
          }
        }
      }
    }
  }
}

创建成功
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

6.2 查询

GET /索引库名
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

6.3 删除

DELETE /索引库名
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

6.4 修改

以后字段类型不可修改,只能新增字段
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎再次查看成功添加
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

七、 文档操作(类似表中每条数据操作)

7.1 添加

post /student/_doc/1
{
  "info": "我爱学习",
  "email": "asfdasfdd.@163.com",
  "name": {
    "firstName": "关",
    "lastName": "羽"
  }
}

Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

7.2 查询

Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

7.3 删除

Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎
发现删除成功了
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

7.4 修改

方式一:全量修改,会删除旧文档,添加新文档

那么存在为修改,不存在时为新增
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎
Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

方式二:增量修改,修改指定字段

Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎

Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎Elasticsearch中倒排索引、分词器、DSL语法使用介绍,Elasticsearch,elasticsearch,大数据,搜索引擎文章来源地址https://www.toymoban.com/news/detail-679522.html

到了这里,关于Elasticsearch中倒排索引、分词器、DSL语法使用介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Elasticsearch专栏 02】深入探索:Elasticsearch为什么使用倒排索引而不是正排索引

    Elasticsearch选择使用倒排索引而不是正排索引,主要是基于倒排索引在处理全文搜索和大规模数据集时的优势。下面将详细解释为什么Elasticsearch更倾向于使用倒排索引,并提供一些简化的代码片段来说明这两种索引结构的基本差异。 正排索引是一种将文档映射到其包含的单词

    2024年02月22日
    浏览(44)
  • 【ElasticSearch】ElasticSearch的倒排索引

    什么是ElasticSearch ElasticSearch是一个基于Apache Lucene构建的开源搜索引擎,它提供了强大的全文搜索和分析功能。它不仅可以快速搜索和检索大量的结构化和非结构化数据,还具备水平扩展和高可用性的特性。 1. 弹性搜索和分布式特性 ElasticSearch被设计为分布式的,可以在多个节

    2024年02月10日
    浏览(42)
  • ElasticSearch简介之倒排索引

    第二点必须准确吧,假如我搜索电脑,结果搜索出来的结果是一些奇奇怪怪的东西,要是在这时候投屏怕不是会陷入社死的尴尬吧。 第三点对于我这种比较粗心的人还是需要有一点的容忍度,哪怕输错其中一个字,也可以给出相关的搜索结果。 第四点对于大部分人而

    2024年04月15日
    浏览(32)
  • Elasticsearch的倒排索引简介

    Elasticsearch的倒排索引(Inverted Index)是其能够快速执行全文搜索查询的关键技术。为了理解倒排索引的工作原理,我们可以将其与传统的正向索引进行比较。 正向索引(Forward Index) 在正向索引中,索引是以文档为中心构建的。每个文档ID映射到它包含的一系列词汇上。例如

    2024年03月16日
    浏览(51)
  • Elasticsearch的倒排索引是什么?

    Elasticsearch是基于 Apache Lucene【lusen】的搜索引擎,支持Restful API风格【可以使用常见的HTTP请求来访问】,并且搜索速度很快,可以提供实时的搜索服务。 其实Elasticsearch的功能有很多,比如分布式存储、实时数据分析等很多方面。使用ES的好处有几点: 系统解耦。使用ES之后,

    2024年04月10日
    浏览(40)
  • 【Elasticsearch专栏 01】深入探索:Elasticsearch的正向索引和倒排索引是什么

    首先,要明确的是,Elasticsearch本质上只使用倒排索引来实现高效的搜索和查询功能。正向索引虽然在某些数据库和搜索系统中被提及,但在Elasticsearch的上下文中并不是一个核心概念。下面我详细解释倒排索引,并简要提及正向索引以提供对比。 倒排索引是Elasticsearch中用于实

    2024年02月22日
    浏览(48)
  • Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch

    1 前言 Elastic Stack 核心产品包括 Elasticsearch【存储数据】、Kibana【展示数据】、Beats 和 Logstash【收集与传输数据】(也称为 ELK Stack)等等。能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化。sa Elasticsearch 是一个分布式、RESTful 风格的搜索和

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

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

    2024年02月14日
    浏览(40)
  • 《面试1v1》ElasticSearch倒排索引

    🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结, 点击 突击面试 🍅 数十万人的面试选择: 面试说人话系列《面试1v1》 我是 javapub,一名 Markdown 程序员从👨‍💻,

    2024年02月13日
    浏览(37)
  • Elasticsearch 如何做到快速检索 - 倒排索引的秘密

    这里我们就引出了一个概念,也是我们今天的要剖析的重点 - 倒排索引。也是 ES 的核心知识点。 如果你了解 ES 应该知道,ES 可以说是对 Lucene 的一个封装,里面关于倒排索引的实现就是通过 lucene 这个 jar 包提供的 API 实现的,所以下面讲的关于倒排索引的内容实际上都是

    2023年04月08日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包