ElasticSearch过滤器的效率与查询

时间:2015-09-29 17:10:05

标签: elasticsearch elasticsearch-percolate

我有求职者和工作列表。我正在尝试确定哪些候选人符合特定列表的资格。我们已经在ES中编制了每个列表。我看到我能做到的两种方式是:

  1. 为ES中的每个候选人编制索引,然后根据列表的参数构建查询,以搜索/过滤合格的候选人,并将其作为结果返回。
  2. 使用percolate功能为每个候选人创建一个percolate查询,然后通过针对候选过滤器索引运行列表的数据来找出哪些候选匹配。
  3. 哪种规模更有效率(数百万条记录)?没有完全理解过滤器是如何实现的(我没有发现任何实际解释实现的文章),我担心的是使用过滤器,我实际上每个列表每个候选者运行一个查询,这将是非常低效的。 / p>

1 个答案:

答案 0 :(得分:0)

使用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 查询记录)

从性能/可扩展性的角度来看,更值得关注的是Percolator requires the entire .percolator index to be loaded to memory

从功能角度来看,您可能需要的Percolator limits certain query types(投票赞成选项1)。

如果您发现自己处于CQ << C(例如用户保存的搜索)的情况,那么Percolator方法更有可能胜过必须查询整个候选索引。

相关问题