Partitioning
有2种通过将数据分区方式来scale搜索引擎: 基于文档(Document based partitioning)and 基于词条(Term based partitioning). Elasticsearch 使用的基于文档的分区方式.
基于文档的分区(Document Based Partitioning)
每一个文档只存一个分区,每个分区持有整个文档集的一个子集,分区是一个功能完整的索引.
优点
- 每个分区都可以独立的处理查询.
- 可以非常简单的添加以文档为单位的索引信息.
- 网络开销很小,每个节点可以分别执行搜索,执行完了之后只需用返回文档的ID和评分信息就可以了,然后在其中一个我们执行分布式搜索的节点上执行合并就可以了.
缺点
- 查询如果需要在所有的分区上执行,那么它将执行 O(K*N) 次磁盘操作(K是词条(Term,或者理解为Field)的数量,N是分区的数量).
在实用性的角度来看基于文档的分区方式已经被证明是一个构建大型的分布式信息检索系统的一种行之有效的方法, 关于这方面的详细内容,可以看 这里 talk by Jeffrey Dean (Google).
基于词条的分区(Term Based Partitioning)
每个分区拥有一部分词条,词条里面包含了整个index的文档数据.
一些基于词条分区的系统,如Riak Search (built on top of Riak key-value store engine) 或是 Lucandra/Solandra (on top of Cassandra). 尽管这些系统不是完全一样,但是它们都面临一个相似的挑战,当然也得益于相同的设计理念.
优点
- 一般来说,你只需要在很少的部分分区上执行查询就行了,比如,我们有5个term词条的查询,我们将至多命中5个分区,如果这5个term词条都保存同一个分区中,那么我们只需用访问一个分区即可,而不管我们是不是实际上有50个分区.
- 另外一个优势就是对应K个Term词条的查询,你只需用执行 O(K) 次磁盘查找(假设我们使用的优化过的实现).
缺点
- 最主要的问题是Lucene Segment概念里面固有的很多结构都将失去。
The main problem is that whole notion of Lucene Segment which is inherent to a lot of constructs in Lucene is lost.
- 对于那些复杂的查询,网络开销将会变得非常高,并且可能使得系统可用性大大降低,尤其是那些会expand出大量的term词条的查询,如fuzzy或者prefix查询.
- 另外一个问题就是获取每个文档的信息将会变得非常困难,举例来说,如果你想获取文档的一部分数据来做进一步的控制,比如(google的PageRank算法),获取每个文档的这些数据都会变得非常困难,因为这种分区的方式使得文档的数据被分散到了不同的地方,所以实现faceting、评分、自定义评分等等都将变得难以实现.
相关推荐
(狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...
elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载
elasticsearch-7.17.6及对应版本IK分词 适合人群:elasticsearch初学者 Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elastic...
一、概述 一般来说我们开发Elasticsearch会选择...2、elasticsearch-head (方便查看ES中的索引及数据) 3、Kibana(方便开发通过rest api 调试ES,有代码提示) 4、中文分词elasticsearch-analysis-ik (ik) 1、下载ela
elasticsearch-8.2.3 windows 版本。 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的...
赠送jar包:elasticsearch-6.8.3.jar; 赠送原API文档:elasticsearch-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.8.3.pom; 包含翻译后的API文档...
赠送jar包:elasticsearch-6.3.0.jar; 赠送原API文档:elasticsearch-6.3.0-javadoc.jar; 赠送源代码:elasticsearch-6.3.0-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.3.0.pom; 包含翻译后的API文档...
适用于7.17.1系列,例如Elasticsearch的7.17.12版本。 elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个...
docker run --name elasticsearch7.16.3 -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" -v /Users/xingyue/Home/xingyue/学习/工程化/es/elasticsearch.yml:/usr/share/elastic...
赠送jar包:elasticsearch-6.8.3.jar; 赠送原API文档:elasticsearch-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.8.3.pom; 包含翻译后的API文档...
赠送jar包:elasticsearch-6.2.3.jar; 赠送原API文档:elasticsearch-6.2.3-javadoc.jar; 赠送源代码:elasticsearch-6.2.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.2.3.pom; 包含翻译后的API文档...
ElasticSearch实战 in Action(原著原版)压缩包,ElasticSearch文档,ES全文检索从入门到精通,高清PDF,是学习es和精通es必备手册,能快速达到精通ElasticSearch,一册在手,ElasticSearch无忧,开发、学习、调优...
最新版windows elasticsearch-8.8.2-windows-x86_64.zip最新版windows elasticsearch-8.8.2-windows-x86_64.zip最新版windows elasticsearch-8.8.2-windows-x86_64.zip最新版windows elasticsearch-8.8.2-windows-...
ElasticSearch数据导出 elasticsearch单文档数据导出 支持自定义查询 导出数据Json文件
1、进入到Elasticsearch的安装路径下,本文中以该路径为例子:/ultra/ES/elasticsearch-2.3.4。先安装license,执行以下命令: ./bin/plugin install license 2、再安装shield,执行以下命令: ./bin/plugin ...
ElasticSearch官网文档中文版
ElasticSearch Java API 中文文档 ElasticSearch Java API 中文文档
Elasticsearch 开机自启脚本,方便用户自动启动Elasticsearch,也可以直接用systemctl启动或是关闭
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索...
十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统。 什么是elasticsearch Elasticsearch 是一个开源的高度可扩展的全文搜索和分析引擎,拥有查询近实时的超强性能。 大名鼎鼎的Lucene 搜索引擎被广泛用于搜索...