【问题标题】:Why Lucene does not provide a Real Time Search and has slow commits?为什么 Lucene 不提供实时搜索并且提交速度很慢?
【发布时间】:2014-01-06 14:46:25
【问题描述】:

我正在尝试在具有 OLTP 处理的应用程序之一中使用 Lucene,这需要实时搜索和事务处理功能。

我一直在围绕 Apache Solr、Elastic Search 和 Lucene 进行大量窃听,并试图理解为什么 Lucene 提交很昂贵以及为什么没有实时搜索,而只有 NRT。

【问题讨论】:

    标签: solr elasticsearch lucene


    【解决方案1】:

    Q> 为什么 Lucene 提交很昂贵?
    A> 因为它处理 I/O。除其他外,它必须执行fsync()、写入新的segments_N 文件、将已删除的文档写入磁盘、合并等等。

    Q>为什么没有实时搜索,只有NRT?
    A>因为Lucene的API是这样设计的:IndexSearcher只有IndexReader 上的薄层,其中包含所有数据。

    您可能想阅读this article 以了解有关内部结构的更多详细信息。

    【讨论】:

    • 好的。假设我们希望每个文档索引都有提交,所以我认为不会有任何合并,让我们也将段数保持为 1。谈到 I/O,我不相信仅此一项就能增加这么多的延迟。与典型的磁盘写入和数据库提交(如 Cassandra 或 Mysql)相比,它的成本要高得多。
    • 我认为您的 cmets 只有在您可以向我们提供包含 一些 数字的分析/基准时才有效。缓慢/昂贵是一个模糊的术语。
    • 是的,我同意我确实使用 Solr 运行了一些基准测试,每个文档索引提交,它产生了大约 8 TPS,而使用批量提交,它也可以达到 3000 OPS 或更多。
    • 但更重要的是,我看到的是 Lucene 进行提交的方式,因为这些指标对我来说看起来很奇怪。
    猜你喜欢
    • 1970-01-01
    • 2016-03-12
    • 2017-07-30
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2019-05-09
    相关资源
    最近更新 更多