ES之Mapping映射

166 阅读2分钟

一、概念

  • 自动或手动为index中的_doc建立的一种数据结构和相关配置,简称为mapping映射。
  • 对比MySQL数据库建表,mysql在建表时指定字段名称及类型,而ES属于动态映射:自动为我们建立index,以及对应的mapping,mapping中包含了每个field对应的数据类型,以及如何分词等设置。
  • ES也可以手动在创建数据之前,先创建index,以及对应的mapping

二、全文检索

1 精确匹配

2019-01-01,exact value,搜索的时候,必须输入2019-01-01,才能搜索出来。 如果你输入一个01,是搜索不出来的

select * from book where name= 'java'

2 全文检索

(1)缩写 vs. 全称:cn vs. china

(2)格式转化:like liked likes

(3)大小写:Tom vs tom

(4)同义词:like vs love

3 倒排索引

  • 分词,初步建立倒排索引
  • 重建倒排索引:normalization正规化,建立倒排索引的时候,会执行一个操作,也就是说对拆分出的各个单词进行相应的处理,以提升后面搜索的时候能够搜索到相关联的文档的概率——时态的转换,单复数的转换,同义词的转换,大小写的转换

4 分词器

  • 作用:切分词语,normalization(提升recall召回率)

  • 给你一段句子,然后将这段句子拆分成一个一个的单个的单词,同时对每个单词进行normalization(时态转换,单复数转换)

  • recall,召回率:搜索的时候,增加能够搜索到的结果的数量

analyzer 组成部分:

1、character filter:在一段文本进行分词之前,先进行预处理,比如说最常见的就是,过滤html标签(<span>hello<span> --> hello),& --> and(I&you --> I and you

2、tokenizer:分词,hello you and me --> hello, you, and, me

3、token filter:lowercase,stop word,synonymom,dogs --> dog,liked --> like,Tom --> tom,a/the/an --> 干掉,mother --> mom,small --> little

stop word 停用词: 了 的 呢。

一个分词器,很重要,将一段文本进行各种处理,最后处理好的结果才会拿去建立倒排索引。