1 ElasticSearch介绍

全文检索 Elastisearch 研究

目标

  1. 了解Elasticsearch的应用场景
  2. 掌握索引维护的方法
  3. 掌握基本的搜索Api的使用方法

约束

  1. 阅读本教程之前需要掌握Lucene的索引方法、搜索方法 。

1 ElasticSearch介绍

1.1 介绍

image-20200130163857914

官方网址:https://www.elastic.co/cn/products/elasticsearch

Github:https://github.com/elastic/elasticsearch

总结:

1、elasticsearch是一个基于Lucene的高扩展的分布式搜索服务器,支持开箱即用。

2、elasticsearch隐藏了Lucene的复杂性,对外提供Restful 接口来操作索引、搜索。

突出优点:

1.扩展性好,可部署上百台服务器集群,处理PB级数据。

2.近实时的去索引数据、搜索数据。

es和solr选择哪个?

1.如果你公司现在用的solr可以满足需求就不要换了。

2.如果你公司准备进行全文检索项目的开发,建议优先考虑elasticsearch,因为像Github这样大规模的搜索都在用 它。

1.2原理与应用

1.2.1索引结构

下图是ElasticSearch的索引结构,下边黑色部分是物理结构,上边黄色部分是逻辑结构,逻辑结构也是为了更好的去描述ElasticSearch的工作原理及去使用物理结构中的索引文件。

image-20200130164158745

逻辑结构部分是一个倒排索引表

1、将要搜索的文档内容分词,所有不重复的词组成分词列表。

2、将搜索的文档最终以Document方式存储起来。

3、每个词和docment都有关联。

如下:

image-20200130164225050

现在,如果我们想搜索 quick brown ,我们只需要查找包含每个词条的文档:

image-20200130164331722

两个文档都匹配,但是第一个文档比第二个匹配度更高。如果我们使用仅计算匹配词条数量的简单相似性算法 ,

那么,我们可以说,对于我们查询的相关性来讲,第一个文档比第二个文档更佳。

1.2.2 倒排索引

倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。

倒排索引包含两个部分:

1 单词词典(Term Dictionary),记录所有文档的单词,记录单词到倒排列表的关联关系

(单词词典一般比较大,可以通过B+树或哈希拉链法实现,以满足高性能的插入与查询)

2 倒排列表(Posting List)-记录了单词对应的文档结合,由倒排索引项组成

​ 倒排索引项(Posting):

​ 文档ID

​ 词频TF - 该单词在文档中出现的次数,用于相关性评分

​ 位置(Position)- 单词在文档中分词的位置。用于语句搜索(phrase query)

​ 偏移(Offset)- 记录单词的开始结束位置,实现高亮显示

1.2.3 RESTful应用方法

如何使用es?

Elasticsearch提供 RESTful Api接口进行索引、搜索,并且支持多种客户端。

image-20200130164502364

下图是es在项目中的应用方式:

image-20200130164536877

1)用户在前端搜索关键字

2)项目前端通过http方式请求项目服务端

3)项目服务端通过Http RESTful方式请求ES集群进行搜索

4)ES集群从索引库检索数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch是一个高扩展的、开源的、全文检索的、建立在Apache Lucene基础上的搜索引擎。它提供了近实时的索引、搜索和分析功能。Elasticsearch使用分布式架构,可以在多个节点上存储和处理大量的非结构化数据,例如文档、视频等。它具有以下特点: 1. 高扩展性:Elasticsearch可以轻松地扩展到数百台甚至数千台服务器,以处理大规模的数据和查询负载。 2. 全文检索:Elasticsearch使用倒排索引来实现高效的全文搜索。它支持复杂的查询语法和多种搜索方式,如精确匹配、模糊匹配、范围查询等。 3. 近实时性:Elasticsearch的索引更新几乎是实时的,可以在毫秒级别内获取到最新的搜索结果。 4. 分布式架构:Elasticsearch使用分片和副本机制来实现数据的分布式存储和高可用性。数据被分成多个分片,每个分片可以在集群中的不同节点上进行复制。 5. 多种数据类型支持:Elasticsearch支持多种数据类型,包括文本、数字、日期、地理位置等。它还提供了丰富的分析功能,如词条化、标记化、过滤器等。 6. 强大的查询和聚合功能:Elasticsearch提供了强大的查询语言和聚合功能,可以对数据进行复杂的过滤、排序、分组和统计操作。 7. 可视化工具支持:Elasticsearch提供了Kibana工具,用于可视化和分析数据。Kibana可以帮助用户创建仪表盘、图表和报表,以便更好地理解和展示数据。 总之,Elasticsearch是一个功能强大、易于使用和高度可扩展的搜索引擎,适用于各种应用场景,包括日志分析、电子商务、内容搜索等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值