Elasticsearch 研究分享(一)_国内有和es对应的检索库吗-程序员宅基地

技术标签: 数据分析  信息检索  人工智能  数据工程  大数据  

        Elasticsearch是一种分布式的全文搜索引擎,简称“es”,是一种非常强大的信息检索(Information Retrieval,IR)应用,广泛应用于大数据分析,其产生的初衷是为了解决大数据下,传统的SQL查询检索速度慢的问题。作为一个搜索服务器,凡是与“检索”有关的应用,都有elasticsearch的身影。比如,github项目检索、百度搜索、淘宝电商等等。

        在学习es之前,首先了解其背景也是非常有必要的。我们都知道Google是一家做搜索引擎起家的公司,其中有一位叫Doug Cutting的工程师,也迷上了搜索引擎。他做了一个用于文本搜索的函数库,命名为Lucene。Lucene是基于JAVA开发的,目标是为各种中小型应用软件提供全文检索功能。因为好用并且开源,非常受到程序员的欢迎。早期的时候,这个项目被发布在Doug Cutting的个人网站和SourceForge(一个开源软件网站)。后来,2001年底,Lucene成为Apache软件基金会jakarta项目的一个子项目。在2004年,Doug Cutting在Lucene的基础上,开发了一款开源的搜索引擎,命名为Nutch。Nutch是一个建立在Lucene核心之上的网页搜索应用程序,并在Lucene的基础上加了网页爬虫和一些网页相关的功能。但是随着时间的推移,无论是google搜索,还是Nutch,都面临搜索对象“体积”不断增大的问题。尤其是Google公司,作为互联网搜索引擎,需要存储大量的网页,并不断优化自己的搜索算法,提升搜索效率。因此,在2003年,Google发表了一篇技术学术论文,公开介绍了自己的谷歌文件系统GFS(Google File System),这是Google公司为了存储海量搜索数据而设计的专用文件系统。2004年,Doug Cutting基于Google的GFS论文,实现了分布式文件存储系统,并将其命名为NDFS(Nutch Distributed File System)。同年,Google又发表了一篇技术学术论文,介绍了自己的MapReduce编程模型,这个编程模型用于大规模数据集(大于1TB)的并行分析计算。2005年,Doug Cutting 又基于MapReduce,在Nutch搜索引擎实现了该功能。

        因此,大数据的两个重要问题:存储计算得到了解决。在存储方面,有Google的GFS和Doug Cutting的NDFS;在计算方面,有Google的MapReduce和Doug Cutting在Nutch上的MapReduce的实现。2006年,Doug Cutting进入了Yahoo(雅虎)公司,将NDFS和MapReduce进行了升级改造,并重新命名为Hadoop(NDFS也改名为HDFS, Hadoop Distributed File System)。这就是大名鼎鼎的大数据框架系统--Hadoop的由来。而Doug Cutting则被人们称之为“Hadoop之父”。因此,Doug Cutting既是Hadoop之父,又是Lucene的创始人,而ES则是基于Lucene而开发的搜索服务器。

        有意思的是,Hadoop的logo是一只黄色的大象,实际上是Doug Cutting他儿子的黄色玩具大象,而这只大象名字就是Hadoop,这便是Hadoop名字的由来。在2006年,Google再次发表了技术学术论文,介绍了自己的BigTable,这是一种分布式数据存储系统,一种用来处理海量数据的非关系型数据库。Doug Cutting在自己的Hadoop系统里,引入了BigTable,并命名为HBase

        Lucene是一套信息检索工具包,不包含搜索引擎,其包含索引结构、读写索引的工具、排序、搜索规则...工具类。那么es和Lucene有什么关系呢?es是基于Lucene,并做了一些封装和增强(上手更加容易)。因此,重新认识下Elasticsearch。

        Elasticsearch,简称es,es是一个开源的高扩展分布式全文检索引擎,它可以近乎实时的存储检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也是用Java开发并使用Lucene作为核心来实现所有索引和搜索功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

        落地场景(谁在使用):

1、维基百科

2、新闻网站,如搜狐新闻

3、Github,搜索千亿行代码

4、Stack Overflow(程序员异常讨论论坛)

5、电商网站,检索商品

6、日志数据分析,logstash采集日志,es进行复杂的数据分析,Kibana进行可视化展示=====ELK技术(Elasticsearch+Logstash+Kibana)。

7、BI,商务智能。

这是es的相关背景介绍,下一篇进行es的安装。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44526949/article/details/106755422

智能推荐

GB/T28181国标视频监控平台,liveweb流媒体平台实现监控视频直播的详细搭建流程_liveweb安装-程序员宅基地

文章浏览阅读463次,点赞10次,收藏8次。要在网页中无插件播放直播视频,现在用的播出协议主要有四种:http-flv、http-mp4、websocket和hls,而rtmp协议由于需要flash支持,目前已经没有人再使用。实现实时视频调阅、设备控制(云台控制、聚焦控制、拉框放大/缩小、巡航、看守位、预置位)、设备录像回放与控制、语音对讲、告警、H264/H265 多编码格式、支持 UDP/TCP 被动/TCP 主动三种流传输模式、设备状态监测、录像检索、向上级联国标平台等能力,能为大数据等综合管理平台提供极强的视频接入能力能力。_liveweb安装

MAT之SA:T1编写主函数法和T2Matlab自带的SA工具箱GUI法,两种方法实现对一元函数优化求解_用matlab怎么证明t1等于t2-程序员宅基地

文章浏览阅读9.1k次,点赞7次,收藏25次。MAT之SA:T1编写主函数法和T2Matlab自带的SA工具箱GUI法,两种方法实现对一元函数优化求解目录输出结果实现代码输出结果%SA:T2法利用Matlab自带的SA工具箱optimtool通过GUI调用@Jason_niu函数实现对一元函数优化求解—Jason niufunction fitnessVal = Jason_niu( x..._用matlab怎么证明t1等于t2

项目代码拆分结构_将一个项目代码拆分成方法级别-程序员宅基地

文章浏览阅读711次。最上层是一个POM类型 作用对整个商城项目中的资源进行统一管理 下面是继承子项目( pom类型)再继承一个工具类(pom类型) 然后每个子项目拆分(controller mapper pojo service) 子项目拆分的为聚合关系 这些拆分的是mapper依赖pojo,service依赖mapper,controller依赖service 得写依..._将一个项目代码拆分成方法级别

buuctf中的一些pwn题总结(不断更新)_ctf -pwn 题目-程序员宅基地

文章浏览阅读4.3k次,点赞4次,收藏18次。前言:本文记录一些buuctf中不是很典型,但是仍然值得记录的pwn题,以便于查看。0x00:stkof——unlink查看保护查看IDA伪代码增自定义size,使用malloc分配。删free之后直接置空,难以利用。改重点来到改中,这里可以随意输入大小,然后根据输入的大小来为堆块中填入数据。这样就造成了堆溢出漏洞。解题思路由于此题存在堆溢出漏洞,我们又掌控着heap地址的存在位置,这样我们很容易就想到unlink漏洞来控制堆块。由于程序本身的原因,我们先malloc一个堆_ctf -pwn 题目

蓝鲸智云实现虚拟机交付(三)-跳板机管理(JUMP)_jumpserver vsphere-程序员宅基地

文章浏览阅读1.3k次。简介蓝鲸智云实现虚拟机交付(二)-虚拟机管理(VSPHERE)原子实现的是从模板克隆新的虚拟机,下面我们需要将其添加到jumpserver中。在此我们要借助于jumpserver的API,我们可以直接查看jumpserver swagger来查看相关API。可参见官网说明:jumpserver开发文档思路jumpserver添加主机的流程:1.创建资产,需要主机的基本信息、管理用户、..._jumpserver vsphere

SpringMVC@NotEmpty等注解不生效_notempty注解不生效-程序员宅基地

文章浏览阅读2w次,点赞5次,收藏6次。现象  表单数据对应的Java Bean属性上添加的诸多校验注解不生效,如下示例:@NotEmpty(message = "规则不能为空", groups = {AppConfigGroup.Add.class,AppConfigGroup.Update.class})@Size(max = 200,groups= {AppConfigGroup.Add.class,AppConfigGro..._notempty注解不生效

随便推点

关于Activiti7审批工作流绘画流程图(2)_activiti7画图工具-程序员宅基地

文章浏览阅读1.3k次。虽然表很多,但是仔细观察,我们会发现Activiti 使用到的表都是 ACT_ 开头的。表名的第二部分用两个字母表明表的用途。在resources下新建Leave.bpmn20.xml文件。首先我们定义一个简单的请假流程。_activiti7画图工具

零碎知识点整理-程序员宅基地

文章浏览阅读389次,点赞9次,收藏11次。

超微主板升级bios_超微主板bios升级大盘点-程序员宅基地

文章浏览阅读3.9k次。如今,电子设备已越来越普及,开始走进千家万户,空调、冰箱、微波炉、电视、音箱、数码相机、随身听几乎家家都有,汽车上装有无线导航,电话、手机等通讯产品必不可少,各种数控设备、仪器、仪表、电线电缆更是在工业中屡见不鲜。而作为先进的电子设备——电脑由于它高端的工作能力和娱乐方式也越来越受欢迎。用电脑的人越来越多,懂电脑的人越来越多,电脑也随着人们的开发不断更新,超微主板BIOS大家应该都听说过吧!它是..._超微的bios主板都差不多嘛

时间序列_python自相关系数(ACF)绘图_acf_corr 的算法流程图-程序员宅基地

文章浏览阅读1w次,点赞10次,收藏56次。一、概述自相关函数,用来度量同一事件在不同时期之间的相关程度,或者说是一个信号经过类似于反射、折射等其它情况的延时后的副本信号与原信号的相似程度。R(τ)=E[(Xt−μ)(Xt−τ−μ)]σ2R(\tau) = \frac{E[(X_t - \mu)(X_{t-\tau} - \mu)]}{\sigma ^ 2}R(τ)=σ2E[(Xt​−μ)(Xt−τ​−μ)]​简单讲就是比较不同时间延迟两个序列的相似程度,就好比下图蓝色框内序列和红色框内序列之间的相关性。二、python实现&s_acf_corr 的算法流程图

【语言处理与Python】6.4决策树/6.5朴素贝叶斯分类器/6.6最大熵分类器-程序员宅基地

文章浏览阅读85次。6.4决策树 决策树是一个简单的为输入值选择标签的流程图。这个流程图由检查特征值的决策节点 和分配标签的叶节点组成。为输入值选择标签,我们以流程图的初始决策节点(称为其根节点)开始。 熵和信息增益在决策树桩确定上的应用(可以自行查找相关资料阅读) 可以参考:http://blog.csdn.net/athenaer/article/details/8425479 决策树的一些..._朴素贝叶斯与最大熵方法

王下邀月熊_Chevalier的前端每周清单系列文章索引-程序员宅基地

文章浏览阅读173次。感谢 王下邀月熊_Chevalier 分享的前端每周清单,为方便大家阅读,特整理一份索引。王下邀月熊大大也于 2018 年 3 月 31 日整理了自己的前端每周清单系列,并以年/月为单位进行分类,具体内容看这里:前端每周清单年度总结与盘点。前端每周清单第 56 期:D3 5.0,深入 React 事件系统,SketchCode 界面..._王下邀月

推荐文章

热门文章

相关标签