我在mysql中有几个表,我已经在solr中对这些表进行了非规范化和索引。这意味着在solr中,多个表中的行组成一个文档。当请求出现时,它可能更新mysql中的多个表,但我的目标是向solr发送一个请求,以更新每个请求的索引。我看过django信号来与mysql同步索引。但它不能用于对solr索引进行一次更新。我应该考虑的其他选择是什么?最理想的方法是什么?
发布于 2016-03-17 10:30:35
我能够通过为所有模型添加一个公共信号处理程序来实现上述目标。
@receiver(post_save, sender=Model1)
@receiver(post_save, sender=Model2)
@receiver(post_save, sender=Model3)
def handler(sender, instance, created, **kwargs):
redis_connection.set(current_thread().name, instance.id)然后在SolrUpdateMiddleware里
class SolrUpdateMiddleware(object):
def process_response(self, request, response):
id = redis_connection.get(current_thread().name)
update_solr(id)
redis_connection.delete(current_thread().name)
return response因此,对于特定的请求,只有一个更新将转到solr。现在我使用的是键值对。如果我想在一个请求中刷新多个文档,我可以使用一个集合。
https://stackoverflow.com/questions/35980088
复制相似问题