繁体   English   中英

与 Elasticsearch 相比,Apache 比诺指数数据如何?

[英]How does Apache Pinot index data when compared to Elasticsearch?

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

PS我完全有效的答案由于一个糟糕的问题而被删除,因为它是“基于意见的”而被关闭。 因此,发布带有有效问题的答案,以便对社区有用。

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

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

Apache Pinot 不是为“搜索”而制造的。 它是为实时分析而构建的。 它使用称为星树索引的东西,类似于数据所有维度的所有组合的预聚合值存储。 如您所见,Apache Pinot 对数据的聚合推导/减少感兴趣,而不是数据本身。 它使用这些预先聚合的值来提供对数据的非常低延迟的实时分析。

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

因此,如果您希望在应用程序中具有搜索功能以及按用户级别进行分析,最好的方法是让 Elasticsearch 和 Pinot 消费者通过并行管道从同一 Kafka 主题中摄取数据。 这样,虽然 Elasticsearch 为搜索目的索引数据,但 Pinot 将处理数据以进行每个用户级别的分析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM