Elasticsearch怎么检索数据ITeye - 乐橙lc8

Elasticsearch怎么检索数据ITeye

2019-01-10 15:15:15 | 作者: 以山 | 标签: 数据,索引,一个 | 浏览: 1366

咱们都知道Elasticsearch是一个全文检索引擎,那么它是怎么完成快速的检索呢?

传统的数据库给每个字段都存储成一个单个值,关于全文检索而言,这样的存储是低效的。举个比方,我有一个大文本字段,存到数据库里边只能是一个值,假如想要检索这个大文本字段里边的任何一个词,数据库怎么完成? 只能经过like含糊查询来完成,先不说功用低,这关于一个查找引擎是远远不够的。

针对上面数据库的缺乏,所以才呈现了Lucene这种全文检索结构而它的中心就在于采用了倒排索引(Inverted Index)的数据结构,不同于数据库的行式存储,Lucene这儿采用了列式存储的方法故而对单个字段能够支撑多个值的存储,这便是倒排索引。

````
Term | Doc 1 | Doc 2 | Doc 3 | ...
------------------------------------
brown | X | | X | ...
fox | X | X | X | ...
quick | X | X | | ...
the | X | | X | ...
````


如上图所示,倒排索引的一个字段由多个Term组成,这些Term是一个有序的列表,而且是仅有不重复的。关于每一个Term又会映射上一切包括该Term的Document Id列表。


为什么谈到Lucene,由于Lucene自身仅仅一个全文检索工具包,它不具有企业级的一些特性,如分布式,副本,扩展等而Elasticsearch和Solr都是根据Lucene开发和扩展的企业级结构,所以了解Lucene对学习Elasticsearch和Solr会有很大协助。


在Elasticsearch中每条数据都是一个json,实际上json中每一个字段都有它自己的倒排索引结构。

当然倒排索引中的每个Term保存的信息还有许多,比方这个Term在多少个Doucuments里边呈现过的次数,在特定的Doucument里边呈现的次数,每个Document的length,一切Document的均匀length,这些信息是用来核算查找的相关性(Relevance),咱们都知道运用google和百度查找成果后,数据会有个先后排名,排名靠前的根本都是最相关的数据,那么那些要素决议了数据的排名? 这儿边其实便是上面所说的相关性来决议,关于相关性的核算方法也是Lucene里边的中心功用,现在Lucene里边主要有两种Rank算法:

(1)经典的根据VSM向量空间的TF/IDF算法

(2)最新的根据概率论的BM25算法

刚爱好的朋友能够去维基百科学习一下,这儿不再展开了。



前期的全文检索一切的数据都会被做成一个大的倒排索引,当新索引准备好之后,它会替代旧的大索引而且最近的改变数据能够被检索。

这个大的倒排索引有一个最大的特色便是不行变性,只需索引被写入磁盘后,便是不行变的:


长处:


(1)由于不行变性,所以不需求锁,也便是不存多个线程一起去修正数据。


(2)能够直接把索引加载到FileSystem Cache停留在cache中,由于它不会被修正而且FileSystem Cache有足够大的空间,这样以来直接在内存中查询替代在磁盘上,对查找功用大大提高。

(3)其他的缓存如filter cache在整个index的生命周期内都是有用的,他们不会被重建,由于索引是不行变的。


(4)不行变的大索引能够得到更高的压缩比,这样以来能够节约io和占用的内存资源


缺陷:

倒排索引的长处也是它的缺陷,由于它不行变,所以为了使你新增的数据能够正常的查找到,你需求重建整个索引,这严峻约束了单个index存储的数量以及它的更新频率。

所以在Elasticsearch中采用了动态更新多个索引方法来处理这个问题,这个会在下篇的文章中介绍。


参阅链接:

https://www.elastic.co/guide/en/elasticsearch/guide/master/inverted-index.html

https://www.elastic.co/guide/en/elasticsearch/guide/master/relevance-intro.html

https://www.elastic.co/guide/en/elasticsearch/guide/master/making-text-searchable.html


有什么问题能够扫码重视微信大众号:我是攻城师(woshigcs),在后台留言咨询。 技能债不能欠,健康债更不能欠, 求道之路,与君同行。
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表乐橙lc8立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    SSL1ITeye

    证书,后边,途径
  • 2

    discuz 单点登录 ucenterITeye

    项目,下载,文件
  • 3
  • 4

    spring+mybatis装备ITeye

    装备,一下,需求
  • 5

    单例形式-线程安全ITeye

    线程,安全,形式
  • 6

    java数据存储ITeye

    数据,存储,分配
  • 7
  • 8

    httpclient 恳求 post、getITeye

    恳求,使用,进行
  • 9

    Redis的耐久化机制ITeye

    耐久,方法,内存
  • 10

    java注解用法ITeye

    注解,注释,运用