ElasticSearch学习

  1. ES 核心概念
  2. IK 分词器
  3. Rest 分格
    1. 关于索引的基本操作
    2. 关于文档的基本操作(重点)
  4. 原理

ES 核心概念

ElasticSearch:简称 es,分布式全文搜索引擎。实时的存储、检索数据。

image-20240329152019163

索引就是数据库,文档就是一条条数据

倒排索引

image-20240329153835659

将文章中的标签都取出来,有该标签的文章则记录下来。以后查询时,只需要查看标签,获取掉对应的文章,过滤掉无关的文章。

IK 分词器

IK 提供了两个分词算法:ik_smart 和 ik_max_word,前者为最少切分,后者为最细粒度切分。

ik_smart 会讲句子切分成词语,词语不会彼此重叠。

ik_max_word 会按细粒度切分,也就是前后只要能组成词语就切分,不在乎是否重叠。

Rest 分格

关于索引的基本操作

基础测试

1、创建一个索引

PUT /索引名/类型名/文档id
{
	键值对形式
}

添加数据

PUT /test3/_doc/1
{
  "name": "wdcp",
  "age": "13",
  "birth": "2001-01-05"
}

更新数据

# 使用 POST 更新数据, 使用_update
POST /test3/_doc/1/_update
{
  "doc": {
    "name": "大盘"
  }
}

如果不使用 _update,改动一个数据需要把其他的值也写上,否则更新后为空。

关于文档的基本操作(重点)

基本操作

GET test3/_doc/_search?q=name:大盘

模糊查询

GET test3/_doc/_search
{
  "query": {
    "match":{
      "name": "大盘"
    }
  }
}

image-20240330155320334

  • gt 大于
  • gte 大于等于
  • lt 小于

精确查询

term 是通过倒排索引精确的查找!

关于分词:

  • term
  • match:会进行分词,再查询

两个类型 text keyword

image-20240330161850615

对于 keyword,查询时不会被分词,因此只有全局匹配才查到。对于 text 会被分词。

高亮

image-20240330162859502

原理

倒排索引:比如某个文档经过分词,提取了 20 个关键词,为每一个词建立一个索引,指明该词在文章中出现的次数和位置。倒排索引就是关键词到文档ID的映射。

index:类似于 MySQL 的表。

document:类似于 MySQL 的记录。

text与keyword:keyword的类型是不会分词的,只能通过精确匹配查询到。text会先分词,根据分词的内容建立倒排索引。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1216271933@qq.com

×

喜欢就点赞,疼爱就打赏