首页天道酬勤elasticsearch开发(Elasticsearch)

elasticsearch开发(Elasticsearch)

admin 12-04 03:19 273次浏览

说到Elasticsearch,很多人的印象都是开源的分布式搜索引擎。底层依靠Lucene倒排索引结构,支持文本分割,非常适合搜索服务。使用Elasticsearch作为搜索引擎,一个三节点集群,支持1000个QPS查询并不难,这是一个搜索场景。

然而,我们在这里要讲的是Elasticsearch的另一个功能,即作为聚合场景的OLAP引擎,它与搜索场景有很大的不同。聚合场景,即多维分组聚合。虽然Elasticsearch DSL是一个复杂的JSON而不是SQL,但它有着相同的含义,可以相互转换。

使用弹性搜索作为OLAP引擎有几个优点:

(1)善于查询QPS高(QPS 1K)、延迟低、过滤条件多、查询方式简单(如点查、简单聚合)的场景。

(2)集群自动化管理(分片分配、恢复)能力很强。

(3)集群、索引管理和查看有丰富的API。

Elasticsearch的执行引擎是最简单的分散-聚集模型,相当于MapReduce计算模型的一个行程图和Reduce。分散和聚集之间的节点数据交换也是基于内存的,与MapReduce不同,每个Shuffle都必须先丢弃磁盘。ES所依赖的Lucene文件格式在底层,我们可以把Lucene理解为行和列混合存储的模式,通过FST(有限状态转换器)和跳表等加快数据查询。这种分散-聚集模型的问题是,如果聚集/减少的数据相对较大,因为ES是由单个节点执行的,所以可能会非常慢。总的来说,专家系统改进了简单OLAP查询的QPS,通过牺牲灵活性来减少延迟。

使用弹性搜索作为OLAP引擎有几个缺点:

多维分组排序和分页。不支持联接。在进行聚合之后,由于返回数据的嵌套层次太多,数据量会过于膨胀。对于扫描基于聚合的查询,随着处理的数据量的增加,响应时间将降低到几分钟。Elasticsearch也可以归为宽表模型,通过倒排索引和应用分散-聚集计算模型来提高查询性能。搜索类的查询效果不错,但当数据量较大或进行扫描聚合类查询时,查询性能会受到很大影响。

php如何将字符串首字母转为大写
() 中国花鸟画入门篇(入门篇)
相关内容