一种基于elasticsearch的数据检索优化方法及系统与流程

文档序号:23382941发布日期:2020-12-22 13:46阅读:153来源:国知局
一种基于elasticsearch的数据检索优化方法及系统与流程

本发明公开一种基于elasticsearch的数据检索优化方法及系统,涉及大数据技术领域。



背景技术:

在大数据时代,随着互联网技术的迅速崛起与普及,人们在不同领域产生到的数据量之大,达到了前所未有的程度。同时,数据的产生、存储和处理方式发生了革命性的变化,人们的工作和生活基本上都可以用数字化表示,因此采用一种有效检索数据的方式愈发重要。

在各种全文检索系统中,以elasticsearch为代表的产品以方便易用快速高效获得了大家的认可,被各种团队广泛地使用于各种业务系统中;现行的全文检索系统在检索工作时,无法有效的针对业务需求对检索范围进行调整,同时检索过程中的数据缓存会造成数据检索的延迟,故现发明一种基于elasticsearch的数据检索优化方法及系统,以解决上述问题。



技术实现要素:

本发明针对现有技术的问题,提供一种基于elasticsearch的数据检索优化方法及系统,所采用的技术方案为:一种基于elasticsearch的数据检索优化方法,所述的方法具体步骤如下:

s1根据检索目的选择字段数据生成索引;

s2对输入的查询语句经过语法分析和语言分析得到一系列词term;

s3通过语法分析得到一个查询树;

s4通过索引存储将索引读入到内存;

s5利用查询树搜索索引;

s6将搜索到的结果文档对查询的相关性进行排序;

s7返回查询结果给用户。

所述s1根据检索目的选择字段数据生成索引的具体步骤如下:

s101将索引文件经过语法分析和语言处理形成一系列词term;

s102经过索引创建形成词典和反向索引表;

s103通过索引存储将索引写入硬盘。

所述s103通过索引存储选择性的将索引写入硬盘。

所述s5利用查询树搜索索引,得到每个词term的文档链表,对文档链表进行交差,并得到结果文档。

一种基于elasticsearch的数据检索优化系统,所述的系统具体包括分词模块、过滤模块、分析模块、存储模块、查询模块、排序模块和反馈模块:

分词模块:根据检索目的选择字段数据生成索引;

过滤模块:对输入的查询语句经过语法分析和语言分析得到一系列词term;

分析模块:通过语法分析得到一个查询树;

存储模块:通过索引存储将索引读入到内存;

查询模块:利用查询树搜索索引;

排序模块:将搜索到的结果文档对查询的相关性进行排序;

反馈模块:返回查询结果给用户。

所述分词模块具体包括处理模块、建立模块和保存模块:

处理模块:将索引文件经过语法分析和语言处理形成一系列词term;

建立模块:经过索引创建形成词典和反向索引表;

保存模块:通过索引存储将索引写入硬盘。

所述保存模块通过索引存储选择性的将索引写入硬盘。

所述查询模块利用查询树搜索索引,得到每个词term的文档链表,对文档链表进行交差,并得到结果文档。

本发明的有益效果为:本发明在生成索引时能够根据业务需求选择字段部分进行检索,从而提高索引生成舒服,避免因为生成文件过多降低搜索速度效率;当使用elasticsearch的目的是为了给其他系统提供检索功能,只需要得到文档id的话,本发明可以选择不存储原始文档,这样会降低磁盘占用,减少不必要的存储,优化存储结构与存储时间,增强了系统的存储容量,提高系统效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明方法的流程示意图;图2是本发明系统的结构示意图;图3是本发明实施例的实施示意图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

elasticsearch是基于lucene实现的一套全文检索工具,关于数据结构的优化通常来说是对lucene的优化;

全文检索:我们生活中的数据总体分为两种:结构化数据和非结构化数据。非结构化数据又一种叫法叫全文数据。全文检索的基本思路,也即将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。从非结构化数据中提取出的然后重新组织的信息,我们称之索引。这种先建立索引,再对索引进行搜索的过程就叫全文检索(full-textsearch);

实施例一:

一种基于elasticsearch的数据检索优化方法,所述的方法具体步骤如下:

s1根据检索目的选择字段数据生成索引;

s2对输入的查询语句经过语法分析和语言分析得到一系列词term;

s3通过语法分析得到一个查询树;

s4通过索引存储将索引读入到内存;

s5利用查询树搜索索引;

s6将搜索到的结果文档对查询的相关性进行排序;

s7返回查询结果给用户;

在通过本发明方法优化数据检索时,首先按照s1根据检索目的选择字段数据生成索引,在生成索引的时候,elasticsearch默认会对所有的字段进行索引,如果在业务系统中我们只需要对部分字段搜索时,可选择将此选项关闭,生成索引时我们要根据实际需求设置相应的参数,elasticsearch系统为了让初学者更快地上手,进行了大量的默认设置,从而实现开箱即用,但这种默认设置也容易拉低性能;接着按照s2对输入的查询语句经过语法分析和语言分析得到一系列词term,并按照s3通过语法分析得到一个查询树,通过s4通过索引存储将索引读入到内存,接着按照s5利用查询树搜索索引,通过s6将搜索到的结果文档对产寻的相关性进行排序,按照s7返回查询结果给用户即可,检索过程中,字典索引是常驻内存的,但因为内存大小有限,资源比较宝贵,导致索引文件中的其他部分不能都存入内存,需要对磁盘进行随机读,这也是拖慢速度的关键原因。根据linux系统现在的设计,系统本身会对数据进行缓存,如果我们访问的数据大部分能在系统缓存中获取到的话,那将会大大提高搜索速度,因此我们需要遵循建议,将elasticsearch的内存设置为系统可用内存的一半,另一半留给系统做缓存使用;

如图3所示,对于超大文件的存储与检索,可以使用基于elasticsearch做搜索,而使用hbase对原始文件进行保存的方式;具体方式为将原始文件存入hbase中,然后再根据搜索需求,将文档存入elasticsearch中进行索引,在存入的时候使用hbase中的文档id作为elasticsearch的id,同时设置不保存原始文件;这样我们只在elasticsearch中保存了搜索相关的数据,搜索时通过elasticsearch搜索到文档id,然后利用这一id可以去hbase中快速得到文件;

进一步的,所述s1根据检索目的选择字段数据生成索引的具体步骤如下:

s101将索引文件经过语法分析和语言处理形成一系列词term;

s102经过索引创建形成词典和反向索引表;

s103通过索引存储将索引写入硬盘;

进一步的,所述s103通过索引存储选择性的将索引写入硬盘;

再进一步的,所述s5利用查询树搜索索引,得到每个词term的文档链表,对文档链表进行交差,并得到结果文档。

实施例二:

一种基于elasticsearch的数据检索优化系统,其特征是所述的系统具体包括分词模块、过滤模块、分析模块、存储模块、查询模块、排序模块和反馈模块:

分词模块:根据检索目的选择字段数据生成索引;

过滤模块:对输入的查询语句经过语法分析和语言分析得到一系列词term;

分析模块:通过语法分析得到一个查询树;

存储模块:通过索引存储将索引读入到内存;

查询模块:利用查询树搜索索引;

排序模块:将搜索到的结果文档对查询的相关性进行排序;

反馈模块:返回查询结果给用户;

在通过本发明系统优化数据检索时,首先通过分词模块根据检索目的选择字段数据生成索引,在生成索引的时候,elasticsearch默认会对所有的字段进行索引,如果在业务系统中我们只需要对部分字段搜索时,可选择将此选项关闭,生成索引时我们要根据实际需求设置相应的参数,elasticsearch系统为了让初学者更快地上手,进行了大量的默认设置,从而实现开箱即用,但这种默认设置也容易拉低性能;接着利用过滤模块对输入的查询语句经过语法分析和语言分析得到一系列词term,并利用分析模块通过语法分析得到一个查询树,利用存储模块通过索引存储将索引读入到内存,接着使用查询模块利用查询树搜索索引,通过排序模块将搜索到的结果文档对产寻的相关性进行排序,利用反馈模块返回查询结果给用户即可,检索过程中,字典索引是常驻内存的,但因为内存大小有限,资源比较宝贵,导致索引文件中的其他部分不能都存入内存,需要对磁盘进行随机读,这也是拖慢速度的关键原因。根据linux系统现在的设计,系统本身会对数据进行缓存,如果我们访问的数据大部分能在系统缓存中获取到的话,那将会大大提高搜索速度,因此我们需要遵循建议,将elasticsearch的内存设置为系统可用内存的一半,另一半留给系统做缓存使用;

如图3所示,对于超大文件的存储与检索,可以使用基于elasticsearch做搜索,而使用hbase对原始文件进行保存的方式;具体方式为将原始文件存入hbase中,然后再根据搜索需求,将文档存入elasticsearch中进行索引,在存入的时候使用hbase中的文档id作为elasticsearch的id,同时设置不保存原始文件;这样我们只在elasticsearch中保存了搜索相关的数据,搜索时通过elasticsearch搜索到文档id,然后利用这一id可以去hbase中快速得到文件;

进一步的,所述分词模块具体包括处理模块、建立模块和保存模块:

处理模块:将索引文件经过语法分析和语言处理形成一系列词term;

建立模块:经过索引创建形成词典和反向索引表;

保存模块:通过索引存储将索引写入硬盘;

进一步的,所述保存模块通过索引存储选择性的将索引写入硬盘;

再进一步的,所述查询模块利用查询树搜索索引,得到每个词term的文档链表,对文档链表进行交差,并得到结果文档

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1