使用SOLR

时间:2018-07-05 12:18:15

标签: solr riak

我们有一个整理工作,可以在RIAK DB(Bitcask)中搜索(使用SOLR)记录,对其进行一些处理,然后从RIAK中删除单个记录。

乔布斯的伪代码看起来像这样

// Search all document, process and delete
LIMIT = 1000
WHILE TRUE
  PAGE = 0
  LOOP DO
    // exported -> is a boolean field with true/false value
    // start_stamp is a datetime field
    KEYS = RIAK.search "exported:true",SORT: 'start_stamp asc' LIMIT: LIMIT, OFFSET: OFFSET

    BREAK RECORD_EMPTY? // START ALL OVER AGAIN

    FOR key in RECORDS DO
      RIAK.GET key
      // Do some processing ... 
      RIAK.DELETE key
    END
    PAGE++
    OFFSET = LIMIT * PAGE
  END
END

在这里我有几件事要了解和理解。

  

[a]为什么SOLR(搜索)返回STALE(有时)在搜索中记录。

     

有时,我看到SOLR搜索返回了一个密钥,该密钥已在   先前或更早的迭代。为什么会这样呢?以及如何解决   那?

     

[b]即使删除了记录,也无法声明磁盘空间

     

我知道RAIK使用了大量DISK空间,但是即使删除对象后   我无法声明系统中的空间(已删除记录先前占用的空间)。

此外,如果有人可以解释这一点...

  

为了方便起见,假设我使用的RIAK最终与3保持一致   假设情况为[a]的群集中的节点,其中客户端查询R = 2的读取请求(参见here)。并给定1个节点   包含删除记录(归咎于最终一致性:))和   假设节点认为其他节点没有什么记录   not_found=true

     

此外,如果2个节点具有不同版本的数据(即   给定节点尚未收到该对象的副本),在这种情况下RIAK会返回什么。

0 个答案:

没有答案