与Elasticsearch相比,Apache Pinot如何索引数据?

7

Elasticsearch和Pinot都在内部使用Apache Lucene。它们在索引策略方面有哪些不同之处?

1个回答

11

Apache Pinot和Elasticsearch解决不同的问题。

Elasticsearch是一个用于全文搜索、模糊查询、搜索词自动完成等功能的搜索引擎。它使用一种称为倒排索引的技术来实现。传统的索引方法使用排序索引,其中文档作为键,关键词作为值存储。在这种情况下,查询延迟非常高,因为需要搜索整个文档。但是在倒排索引中,关键词作为键,文档id作为值进行存储。在这里,只需要搜索搜索关键词,查询延迟会很低。因此,Elasticsearch使用倒排索引来实现其核心目的,即“搜索”。

Apache Pinot并不是为了“搜索”而构建的。相反,它是为了实时分析而构建的。它使用一种称为Star-Tree索引的技术,这是一种包含数据所有维度组合的预聚合值存储方式。正如您所看到的,Apache Pinot对数据的聚合推导/减少更感兴趣,而不是数据本身。它使用这些预先聚合的值来提供非常低的延迟、实时的数据分析。

Apache Pinot非常重要的用例之一是计算实时的以用户为级别的分析,并呈现实时的面向用户的仪表板。Elasticsearch也可以使用Kibana呈现实时仪表板,但由于它使用倒排索引方法,它不适合以用户为级别的分析,因为这会给服务器带来巨大的负担,并需要大量的弹性实例。由于这个上限,Elasticsearch不适合以用户为级别的分析。

因此,如果您想在您的应用程序中具有搜索功能和以用户为级别的分析,请通过并行管道将数据同时传输到Elasticsearch和Pinot消费者中。这样,当Elasticsearch为搜索目的索引数据时,Pinot将处理数据以进行以用户为级别的分析。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接