Elasticsearch

ELK

一、搜索引擎的前世今生

1.1索引

想搞清楚全文检索,必须要搞清楚下面三个问题:

1. 索引库里面究竟存些什么?(Index)

2. 如何创建索引?(Indexing)

3. 如何对索引进行搜索?(Search)

1.2获得文档

1.3创建文档对象

1.4分析文档

**说明:分析文档主要通过分词组件(Tokenizer)语言处理组件(Linguistic Processor)**完成

二、索引文档

2.1索引库创建

索引的目的是为了搜索

在这里插入图片描述

将得到的词(Term)传给索引组件(Indexer),索引组件(Indexer)主要做以下几件事情:

创建Term字典----》排序Term字典----》合并Term字典

· Document Frequency 即文档频次,表示总共有多少文件包含此词(Term)。

· Frequency 即词频率,表示此文件中包含了几个此词(Term)。

到此为止,索引已经创建好了。

最终的索引结构是一种倒排索引结构也叫反向索引结构,包括索引和文档两部分,索引即词汇表,它的规模较小,而文档集合较大。

倒排索引结构是根据内容(词汇)找文档,如下图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

创建索引流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

三、Lucene相关度排序

相关度排序是查询结果按照与查询关键字的相关性进行排序,越相关的越靠前。比如搜索“Lucene”关键字,与该关键字最相关的文章应该排在前边。

3.1相关度打分

Lucene对查询关键字和索引文档的相关度进行打分,得分高的就排在前边。

如何打分呢?Lucene是在用户进行检索时实时根据搜索的关键字计算出来的,分两步:

\1. 计算出词(Term)的权重

\2. 根据词的权重值,计算文档相关度得分。

什么是词的权重?

通过索引部分的学习,明确索引的最小单位是一个Term(索引词典中的一个词)。搜索也是从索引域中查询Term,再根据Term找到文档。Term对文档的重要性称为权重,影响Term权重有两个因素:

· Term Frequency (tf):

指此Term在此文档中出现了多少次。tf 越大说明越重要

词(Term)在文档中出现的次数越多,说明此词(Term)对该文档越重要,如“Lucene”这个词,在文档中出现的次数很多,说明该文档主要就是讲Lucene技术的。

· Document Frequency (df):

指有多少文档包含此Term。df 越大说明越不重要

比如,在一篇英语文档中,this出现的次数更多,就说明越重要吗?不是的,有越多的文档包含此词(Term), 说明此词(Term)太普通,不足以区分这些文档,因而重要性越低。

3.2设置boost值影响相关度排序

**boost是一个加权值(默认加权值为1.0f),它可以影响权重的计算。**在索引时对某个文档中的field设置加权值,设置越高,在搜索时匹配到这个文档就可能排在前边。

3.3 Filed属性

Field是文档中的域,包括Field名和Field值两部分,一个文档可以包括多个Field,Document只是Field的一个承载体,Field值即为要索引的内容,也是要搜索的内容。

是否分词(tokenized)

是否索引(indexed)

是否存储(stored)

3.4 Filed 常用类型

Field类数据类型Analyzed 是否分词Indexed 是否索引Stored 是否存储说明
StringField(FieldName, FieldValue,Store.YES))字符串NYY或N这个Field用来构建一个字符串Field,但是不会进行分词,会将整个串存储在索引中,比如(订单号,身份证号等) 是否存储在文档中用Store.YES或Store.NO决定
LongField(FieldName, FieldValue,Store.YES)Long型YYY或N这个Field用来构建一个Long数字型Field,进行分词和索引,比如(价格) 是否存储在文档中用Store.YES或Store.NO决定
StoredField(FieldName, FieldValue)重载方法,支持多种类型NNY这个Field用来构建不同类型Field 不分析,不索引,但要Field存储在文档中
TextField(FieldName, FieldValue, Store.NO) 或 TextField(FieldName, reader)字符串 或 流YYY或N如果是一个Reader, lucene猜测内容比较多,会采用Unstored的策略.

四、Elasticsearch

当ElasticSearch的节点启动后,它会利用多播(multicast)(或者单播,如果用户更改了配置)寻找集群中的其它节点,并与之建立连接。这个过程如下图所示:

在这里插入图片描述

五、ELK

ELK=elasticsearch+Logstash+kibana elasticsearch:后台分布式存储以及全文检索 logstash: 日志加工、“搬运工” kibana:数据可视化展示。 ELK架构为数据分布式存储、可视化查询和日志解析创建了一个功能强大的管理链。 三者相互配合,取长补短,共同完成分布式大数据处理工作。

全文检索 logstash: 日志加工、“搬运工” kibana:数据可视化展示。 ELK架构为数据分布式存储、可视化查询和日志解析创建了一个功能强大的管理链。 三者相互配合,取长补短,共同完成分布式大数据处理工作。

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值