elasticsearch - ElasticSearch渗透器与查询的效率

标签 elasticsearch elasticsearch-percolate

我有求职者和工作 list 。我正在尝试确定哪些候选人符合特定职位的资格。我们已经在ES中索引了每个列表。我看到可以执行此操作的两种方法是:

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

  • 哪一个是更有效和大规模的(几百万条记录)?我没有完全了解渗透器是如何实现的(我还没有找到任何实际解释实现的文章),我担心的是,使用渗透器,我实际上会对每个列表中的每个候选者运行一个查询。

    最佳答案

    使用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/

    相关文章:

    elasticsearch - Elasticsearch percolate函数中的搜索选项

    performance - 如何提高 ElasticSearch 中的过滤器性能?

    Java Elasticsearch-Hadoop 配置的节点都不可用

    elasticsearch - 如何渗透 simple_query_string/query_string 查询

    elasticsearch - 自定义索引或唯一约束

    docker - 无法连接到 docker 中端口9300上的Elasticsearch

    elasticsearch - ElasticSearch渗滤器可扩展性

    elasticsearch - 有没有办法批量添加 ElasticSearch 过滤?

    javascript - Elasticsearch 日期数学问题,不确定范围

    elasticsearch - 如何在 ElasticSearch 中使用 Lucene SpanQuery