【问题标题】:Efficiency of the ElasticSearch percolator versus queryingElasticSearch 渗透器与查询的效率
【发布时间】:2015-11-06 00:38:26
【问题描述】:

我有求职者和职位列表。我正在尝试确定哪些候选人有资格获得特定列表。我们已经在 ES 中索引了每个列表。我认为可以做到这一点的两种方法是:

  1. 索引 ES 中的每个候选人,然后根据列表参数构建查询以搜索/过滤合格的候选人,并将其作为结果返回。
  2. 使用 percolate 功能为每个候选人创建一个 percolate 查询,然后通过针对候选人 percolator 索引运行列表数据来找出哪些候选人匹配。

在规模(数百万条记录)上,哪个更高效、更高效?不完全理解渗透器是如何实现的(我还没有找到任何实际解释实现的文章),我担心的是,使用渗透器,我实际上会为每个列表的每个候选人运行一个查询,这将非常低效。

【问题讨论】:

    标签: elasticsearch elasticsearch-percolate


    【解决方案1】:

    使用 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 方法更有可能优于必须查询整个候选索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-13
      • 2020-02-27
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多