ElasticSearch基础

ElasticSearch 是基于 Apache Lucene 全文检索的一个检索引擎。

全文检索

Lucene词汇表

Apache Lucene 有一些基本概念:
- 文档
索引和搜索时使用的主要载体,包含一个或多个存有数据的字段
- 字段
文档的一部分,包含名称和值两部分
- 词
一个搜索单元,表示文本的一个词
- 标记
表示在字段文本中出现的词,由这个词的文本、开始和结束偏移量以及类型组成
Apache Lucene 将所有信息写入倒排索引的结构中。倒排索引是建立索引中词和文档之间的映射,即不是面向文档而是面向一个个词。
倒排索引中,会有每一个词出现的文档编号,出现的频率计数等信息。

输入数据分析

文档中的数据,转化为倒排索引,是由分析器完成的。
分析器由一个分词器 tokenizer 和零个或多个标记过滤器 token filter 组成,也可以有零个或多个字符映射器 character mapper。
Lucene 中的分词器将文本分割为多个标记,就是词加上一些额外信息,如词在原始文本中的位置和长度。分词器处理的结果是产生标记流 token steam,它是一个接一个的标记,准备被过滤器处理。
过滤器有:
- 小写过滤器(lowercase filter),把所有的标记变为小写;
- 同义词过滤器(synonyms filter),基于基本的同义词规则,把一个标记换成另一个同义的标记;
- 多语言词干提取过滤器(multiple language stemming filter),减少标记,得到词干。
过滤器是一个接一个处理的,可以使用多个过滤器来处理。
字符映射器的作用是对未经分析得文本起作用,他们在分词器之前工作,所以很容易从文本的整体部分去除 HTML 标签而无需担心它们被标记。

在建立索引时,Lucene 会使用被选择的分析器来处理文档内容,不同的字段我们可以使用不同的分析器。
在查询时,查询也可被分析。如匹配查询会被分析,但前缀和词查询不被分析。

评分和查询相关性

文档的得分是根据文档和查询的匹配度用计分公式计算的结果。Lucene 默认使用 TF/IDF 即词频/逆向文档频率 评分机制,这是一种计算文档在查询上下文中相关度的算法。评分越高,说明文档和此查询越相关。

ElasticSearch基础

  • 索引
    索引 index 可以看做是 MongoDB 数据库的一个集合 collection。
  • 文档
    一个文档相当于一条记录,MongoDB 中同一个集合中每个文档的结构可以不同,但在 ES 中相同的字段必须是相同的类型。
  • 文档类型
    在 ES 中,一个索引对象可以存储不同用途的对象,使用文档类型 type 来区分。在同一索引中的所有文档类型中,同名的字段必须有相同的类型。
  • 映射
    ES 在映射中存储有关字段的信息,每一个文档类型都有自己的映射。文档中的每个字段都必须根据不同的类型做相应的分析。

ElasticSearch主要概念

-节点和集群
ES 可以运行在服务器集群上,每个节点都提供 ES 相关服务。
- 分片
当大量的文档来检索时,一个节点可能不够,可以将数据分片,每个分片都是一个独立的 Lucene 索引。每个分片可以放在不同的服务器上,当查询的索引分布在多个分片上时,ES 会把查询发送给每个相关的分片,并将结果合并在一起,而应用程序并不知道分片的存在。此外,多个分片可以加快索引。
- 副本
分片副本可以提高查询吞吐量或实现高可用。副本 replica 是一个分片的精确复制,每个分片可以有零个或多个副本。ES 可以有许多相同的分片,其中一个被自动选择去更改索引操作,这个分片成为主分片,其余是副本分片。在主分片丢失时,集群将副本提升为新的主分片。
- 时光之门
ES 处理很多节点,集群的状态由时光之门控制。默认情况下,每个节点都在本地存储这些信息,并且在节点中同步。

版本控制

在更新了相同标识符的文档后,版本号是递增的,默认情况下,ES 在添加更新删除文档时都会递增版本号。除了告诉我们文档更改的次数,还能够实现乐观锁,允许我们在并发处理同一文档时避免问题。例如,在两个不同的应用程序中读取同一个文档,并且分别修改它,然后尝试更新,如果没有版本控制,将看到最后更新的版本。使用乐观锁,ES 能保证数据的准确性,尝试写入一个已更改的文档将会失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值