elasticsearch 开源搜索框架

一 简介

Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。

但是,Lucene只是一个库。想要 使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

Elasticsearch的中文网址:Elasticsearch:官方分布式搜索和分析引擎 | Elastic

Apache Lucene™ 项目开发开源搜索软件。该项目发布了一个名为 Lucene™ core 的核心搜索库,以及 PyLucene,一个用于 Lucene 的 Python 绑定。

Lucene Core是一个 Java 库,提供强大的索引和搜索功能,以及拼写检查、命中突出显示和高级分析/标记化功能。该PyLucene 子项目提供了Python绑定Lucene的核心。

1.1正向索引 和倒排索引

正向索引与倒排索引,这是在搜索领域中非常重要的两个名词,正向索引通常用于数据库中,在搜索引擎领域使用的最多的就是倒排索引,我们根据如下两个网页来对这两个概念进行阐述:

html1

<span style="background-color:#f8f8f8 !important"><span style="color:#34495e">我爱我的祖国,我爱编程</span></span>

html2:

<span style="background-color:#f8f8f8 !important"><span style="color:#34495e">我爱编程,我是个快乐的小码农</span></span>

正向索引:  假设我们使用mysql的全文检索,会对如上两句话分别进行分词处理,那么预计得到的结果如下:

<span style="background-color:#f8f8f8 !important"><span style="color:#34495e">我 爱 爱我 祖国 我的祖国 编程 爱编程 我爱编程</span></span>
<span style="background-color:#f8f8f8 !important"><span style="color:#34495e">我 我爱 爱 编程 爱编程 我爱编程 快乐 码农 小码农</span></span>

假设我们现在使用正向索引搜索 编程 这个词,那么会到第一句话中去查找是否包含有 编程 这个关键词,如果有则加入到结果集中;第二句话也是如此。假设现在有成千上百个网页,每个网页非常非常的分词,那么搜索的效率将会非常非常低些。

倒排索引:  倒排索引是按照分词与文档进行映射,我们来看看如果按照倒排索引的效果:

关键词文档名
html1,html2,html3
html1,html2
爱我html1
我爱html2
祖国html1
我的祖国html1
编程html1,html2
我爱编程html1,html2
爱编程html1,html2
快乐html2
码农html2
小码农html2

如果采用倒排索引的方式搜索 编程 这个词,那么会直接找到关键词中查找到 编程 ,然后查找到对应的文档,这就是所谓的倒排索引。正向索引是通过文档去查找单词,反向索引则是通过单词去查找文档。

倒排索引的优点还包括在处理复杂的多关键字查询时,可在倒排表中先完成查询的并、交等逻辑运算,得到结果后再对记录进行存取,这样把对文档的查询转换为地址集合的运算,从而提高查找速度

1.2 elasticsearch 概念以及产品

Elasticsearch中的索引的概念与数据库中索引的概念是完全不一样的,Elasticsearch中索引如果类比到数据库,那就是一个数据库名。

文档在Elasticsearch中就是具体的数据,类比到数据库中那就是一条记录。

2.2 安装elasticsearch kibana logstash

Kibana是世界上最受欢迎的开源日志分析平台ELK Stack中的“K” ,它为用户提供了一个工具,用于在存储于Elasticsearch集群中的日志数据进行检索,可视化和构建仪表板。

Kibana的核心功能是数据查询和分析。使用各种方法,用户可以搜索Elasticsearch中索引的数据,以查找其数据中的特定事件或字符串,以进行根本原因分析和诊断。基于这些查询,用户可以使用Kibana的可视化功能,允许用户使用图表,表格,地理图和其他类型的可视化以各种不同的方式可视化数据。

Logstash是一个开源的服务器端数据处理管道,可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到你最喜欢的“存储”。创建于2009年,于2013年被elasticsearch收购

三 elasticsearch基本概念

3.1 索引、文档、类型

索引

Elasticsearch中的索引有多层的意思:a. 某一类文档的集合就构成了一个索引,类比到数据库就是一个数据库(或者数据库表);b.它还描述了一个动作,就是将某个文档保存在elasticsearch的过程也叫索引;c. 倒排索引。

文档

具体的一条数据,类比到数据库就是一条记录。

 

类型

在7.0之前,一个Index可以创建多个类型,从7.0开始,一个索引只能创建一个类型,也就是_doc

DBMSElasticsearch
databaseIndex
tabletype(在7.0之后type为固定值_doc)
RowDocument
ColumnField
SchemaMapping
SQLDSL(Descriptor Structure Language)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值