背景:在考察了多种工具后,我们决定使用solr来作为多标签用户管理体系的查询方案。
原计划:电话,call客,跟进等等记录上报到kafka,然后通过flume+morphline录入到solr中。每一个用户是一个独立的父文档,然后每新增一条来电/call客/跟进记录,则会在用户的父文档下增加一个嵌套子文档。
这样设计的好处是,一个文档就能记录一个用户所有的记录,并且还支持多维度的标签查询满足条件的用户。
在实现的过程中发现并不是那么顺利:solr原来是不支持子文档的更新和增加的。下面是solr官方社区开源问题单对应的说明。
https://issues.apache.org/jira/browse/SOLR-6596
然而功能仍然能实现,我们通过指定一个<doc_type>的字段将文档标识:用户文档,来电记录文档,call客记录文档。而这些文档都能通过phone这个关键字段来识别。