首页 > 其他分享 >Es分词过程

Es分词过程

时间:2023-09-14 10:33:38浏览次数:42  
标签:term id 索引 字段 Es 过程 分词 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,就能快速找到文档。

标签:term,id,索引,字段,Es,过程,分词,ES
From: https://www.cnblogs.com/kkbk/p/17701819.html

相关文章

  • 使用 SAP Business Application Studio Data Editor 生成 Mock Data
    SAPBusinessTechnologyPlatform(BTP)是SAP提供的一种综合性云平台,用于构建、扩展和集成企业应用程序。它为企业提供了一个强大的工具集,以支持数字转型和业务创新。在BTP上,BusinessApplicationStudio(BAS)是一个云集成开发环境,它为开发人员提供了一种轻松创建、管理和......
  • testing-code-测试代码unittest如何编写?
    1---name_function.py函数name_function.py用来获取人名,入参时选择姓、名、中间字三项(middle为可选入参项)1#!usr/bin/env/python23defget_formatted_name(first,last,middle=""):4ifmiddle:5full_name=f"{first}{middle}{last}"6returnf......
  • combineLatest 操作符在 Spartacus Cost Center 计算逻辑中的一个实际应用
    考虑下面这段Angular代码:this.costCenters$=combineLatest([this.userCostCenters$,this.checkoutCostCenterFacade.getCostCenterState().pipe(filter((state)=>!state.loading),map((state)=>state.data),distinctUntilCh......
  • oracle数据库使用to_timestamp格式化日期数据时,报错: ORA-01821: date format not reco
    今天偶然发现一个问题:我使用的数据库是11.2版本的sql语句:SELECTto_timestamp('2023-09-1315:43:29.943','yyyy-mm-ddhh24:mi:ss.fff')ASmydataFROMdual就会报错,项目出现问题,但很神奇的时使用oracle数据库12版本的就不会报错。 网上查了下,说是毫秒处是6位的,但只显示3位......
  • @Controller与@RestController
    https://blog.csdn.net/qq_31016939/article/details/131363158https://blog.csdn.net/moshowgame/article/details/82869151https://blog.csdn.net/u013154103/article/details/79783884@Controller与@RestController的区别都是用来表示Spring某个类是否可以接收Http请求......
  • 《Docker与Kubernetes容器运维实战》简介
    #好书推荐##好书奇遇季#《Docker与Kubernetes容器运维实战》已经出版。本书帮助读者系统掌握Docker与K8s运维技能。 本书内容 本书分两部分系统介绍Docker与Kubernetes的运维技术。(1)Docker部分包括:全面认识Docker、初步体验Docker、Docker基本管理、Docker仓库、数据管理、......
  • AtCoder Beginner Contest 319 全部题解
    AtCoderBeginnerContest319全部题解ALegendaryPlayers该题只需使用判断来写出所有的答案,注意不要复制错。#include<bits/stdc++.h>usingnamespacestd;strings;intmain(){ cin>>s; if(s=="tourist")cout<<3858<<endl; if(s=="ksun4......
  • public ::google::protobuf::Message
     public::google::protobuf::Messagefilelist继承..... .protomessageabc{requiredstringaa=1;optionalstringbb=4; }messageDeparts{repeatedabccc=1;......
  • ubuntu22.04安装并初始化postgresql
    ubuntu22.04自带其实是有数据库的,通过以下命令可以查看当前数据库的版本信息aptshowpostgresql 如果要安装新的数据库,可以执行以下命令sudoaptupdatesudoaptinstallpostgresqlpostgresql-contribpostgresql-contrib或者说contrib包,包含一些不属于P......
  • ES
    linux搭建ES#1dockernetworkcreatees-net#2导入数据dockerload-ies.tar#3运行dockerrun-d\ --namees\-e"ES_JAVA_OPTS=-Xms512m-Xmx512m"\-e"discovery.type=single-node"\-ves-data:/usr/share/elasticsearc......