我有求职者和工作 list 。我正在尝试确定哪些候选人符合特定职位的资格。我们已经在ES中索引了每个列表。我看到可以执行此操作的两种方法是:
哪一个是更有效和大规模的(几百万条记录)?我没有完全了解渗透器是如何实现的(我还没有找到任何实际解释实现的文章),我担心的是,使用渗透器,我实际上会对每个列表中的每个候选者运行一个查询。
最佳答案
使用Percolator,您可以通过“查询”索引运行搜索查询。因此,在您的情况下,Elasticsearch执行的相对“工作”在两种情况下都相似:C: Number of Candidates
CQ: Number of Candidate-Job-Search-Alert-Queries
(根据您的描述,系统中的C = CQ)
选项1 。索引所有候选人。每次添加新作业时,都在候选索引上运行搜索以匹配作业的特征。 (搜索 C 记录)
选项2 。在.percolator
索引中为每个候选人注册1个Job-Search-Alert-Query。每次添加新作业时,请使用Percolate API识别匹配的Candidate-Job-Search-Alert-Queries。 (搜索 CQ 查询记录)
从性能/可伸缩性的 Angular 来看,更大的担忧是Percolator requires the entire .percolator
index to be loaded to memory。
从功能的 Angular 来看,您可能需要Percolator limits certain query types(这将是对选项1的投票)。
如果您发现自己处于CQ << C
的情况下(例如用户保存的搜索),那么Percolator方法更有可能胜过必须查询整个候选索引的情况。
关于elasticsearch - ElasticSearch渗透器与查询的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32849910/