ES倒排索引及类型映射与分析器(SE倒排及搜索实现基础)

前言

ES快速搜索的基础是建立在逆序索引设计的基础上的, 逆序索引的建立最基础的设计则是对于字符串的词语拆分 ;
通过将全文文本拆分为唯一性单词表,并建立单词与文档的匹配关系,搜索引擎可以通过采用相同策略对于查询条件进行分析, 并根据查询条件所生成的关键词目录对应的从单词-文档映射关系表查找相关的文档,并根据条件匹配度实现相关性排序.

1 数据类型映射

ES会对字段类型进行猜测并动态生成字段和类型的映射关系,
在字段被映射为特定的非文本类型时,其查询方式不同于文本查询匹配规则;(确切值查询与全文文本查询的区别)
但一般来说在未指定查询字段的情况下由于会使用默认的_all进行匹配,也能查询到相应结果;

2 非结构化的全文文本查询与倒排索引(模糊的相关度的查询方式与倒排索引)

倒排索引的建立:(分词技术为基础)——包括单词到词根处理,大小写处理等

1. 文本分析与拆分:将全文文本拆分为唯一性单词表,并建立单词与相关文档的匹配关系
2. 根据单词去匹配相关的文档,并由匹配的程度可得出相关度;

3 分析器

包含三个主要组件:字符过滤器、分词器、标记过滤

3.1 字符过滤器

在标记化前处理字符串。字符过滤器能够去除HTML标记,或者转换 "&"为 “and”。

3.2 分词器

分词器(tokenizer)可以根据空格或逗号将单词分开(译者注:这个在中文中不适用)。

3.3 标记过滤

可以修改词(例如将 "Quick"转为小写),去掉词(例如停用词像 “a”、 “and”、 "the"等等),或者增加词(例如同义词像 "jump"和 “leap”)
ES有许多内建的分析器与子组件,也可以自行组合构建分析器,指定合适的分析器

自行测试分析器效果:
GET /_analyze?analyzer=standard&text=Text to analyze

4. 映射

核心简单字段类型

Elasticsearch支持以下简单字段类型:

类型表示的数据类型
Stringstring
Whole numberbyte, short, integer, long
Floating pointfloat, double
Booleanboolean
Datedate

当你索引一个包含新字段的文档——一个之前没有的字段——Elasticsearch将使用动态映射猜测字段类型,这类型来自于JSON的基本数据类型,使用以下规则:

JSON typeField type
Boolean: true or false“boolean”
Whole number: 123“long”
Floating point: 123.45“double”
String, valid date: “2014-09-15”“date”
String: “foo bar”“string”

注意

这意味着,如果你索引一个带引号的数字—— “123”,它将被映射为 "string"类型,而不是 "long"类型。然而,如果字段已经被映射为 "long"类型,Elasticsearch将尝试转换字符串为long,并在转换失败时会抛出异常。

GET /gb/_mapping/tweet 查看映射的情况

5 复合类型

5.1 多值字段

其类型按照第一个元素来取,因此需保证数组中的值类型相同

5.2 空值

这四个字段将被识别为空字段而不被索引:

"empty_string":             "",
"null_value":               null,
"empty_array":              [],
"array_with_null_value":    [ null ]

5.3 多层对象

内部对象并不被特别关注,他们在底层都是一样的

{
    "tweet":            [elasticsearch, flexible, very],
    "user.id":          [@johnsmith],
    "user.gender":      [male],
    "user.age":         [26],
    "user.name.full":   [john, smith],
    "user.name.first":  [john],
    "user.name.last":   [smith]
}

且对于一个文档的多个对象的数组,在该种结构下会失去数据间的一些映射关系,因此内部对象的关联或嵌套是有必要的。

{
    "followers.age":    [19, 26, 35],
    "followers.name":   [alex, jones, lisa, smith, mary, white]
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值