Es分词过程

ES 的分词不仅仅发生在文档创建的时候,也发生在搜索的时候

查询:

  • 读时分词发生在用户查询时,ES 会即时地对用户输入的关键词进行分词,分词结果只存在内存中,当查询结束时,分词结果也会随即消失

添加:

  • 而写时分词发生在文档写入时,ES 会对文档进行分词后,将结果存入倒排索引,该部分最终会以文件的形式存储于磁盘上,不会因查询结束或者 ES 重启而丢失。

ES中存储上表中的数据,ES会创建以下的索引

Term Posting List
hjx 1
Bob 2
Alan 3
24 [1,2]
26 3
1
[2,3]

Term是字段值,Posting List是其所属的id数组

(21条消息) ES 索引_es索引_萝卜7的博客-CSDN博客

ES在构建时,会为每个字段构建倒排索引 ---- 其中只有text类型字段 会为其分词

现有索引和映射如下:

{
  "products" : {
    "mappings" : {
      "properties" : {
        "description" : {
          "type" : "text"
        },
        "price" : {
          "type" : "float"
        },
        "title" : {
          "type" : "keyword"
        }
      }
    }
  }
}

先录入如下数据,有三个字段title、price、description等

_id title price description
1 蓝月亮洗衣液 19.9 蓝月亮洗衣液高效
2 iphone13 19.9 不错的手机
3 小浣熊干脆面 1.5 小浣熊好吃

在ES中除了text类型分词,其他类型不分词,因此根据不同字段创建索引如下:

title字段:

term _id(文档id)
蓝月亮洗衣液 1
iphone13 2
小浣熊干脆面 3

price字段

term _id(文档id)
19.9 [1,2]
1.5 3

description字段

term _id term _id term _id
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1
[1:1:9,2:1:6,3:1:6]
1
1

注意: Elasticsearch分别为每个字段都建立了一个倒排索引。因此查询时查询字段的term,就能知道文档ID,就能快速找到文档。

posted @   蛋蛋十二月  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示