过滤器对弹性搜索的意义/做什么?

时间:2014-02-03 20:02:15

标签: java lucene elasticsearch search-engine

尽管我阅读了Elasticsearch的文档以了解过滤器是什么。我仍然难以理解它的含义以及简单使用的地方。任何人都可以向我提供更多细节吗?

2 个答案:

答案 0 :(得分:94)

您通常做的是索引文档并通过查询将其取回。 percolator允许您简单地做的是索引您的查询并根据索引查询渗透文档以了解它们匹配的查询。它也被称为反向搜索,因为你所做的与你习惯的相反。

过滤器有不同的用例,第一个用于存储用户兴趣的平台,以便在合适的用户进入后立即将正确的内容发送给他们。

例如,用户订阅特定主题,并且只要该主题的新文章进入,就会向感兴趣的用户发送通知。您可以使用query DSL将用户兴趣表达为elasticsearch查询,您可以将其注册在elasticsearch中,因为它是一个文档。每次发布新文章时,无需对其进行索引,您可以对其进行渗透以了解哪些用户对其感兴趣。此时您知道谁需要接收包含文章链接的通知(尽管发送通知不是由elasticsearch完成的)。另外一个步骤也是索引内容本身,但这不是必需的。

从弹性搜索1.0开始,查看this presentation以查看与过滤器结合使用的其他几个用例和其他功能。

答案 1 :(得分:17)

简单来说,percolator执行此操作:

  

用户:嘿Percolator!你怎么能帮帮我?

过滤器:海用户!我可以帮助您获取您感兴趣的提醒。

  

用户:太棒了!接下来我该怎么办?

过滤器:请以Elasticsearch索引的查询形式告诉我您的兴趣。

  

用户:我已将所有兴趣都准备好作为查询,并将其编入索引到Elasticsearch。这很简单吗?

过滤器:是的!就这么简单!如果符合您的任何兴趣(查询),我会查看所有收到的文件,并回复您的文件!

  

用户:真棒!我只是很好奇,想知道怎么可能   你弄清楚哪些文件符合我的兴趣。

过滤器:这是个好问题!答案很简单!您已将自己的兴趣编入索引到Elasticsearch吗?我使用它们并运行所有这些(不是全部,但为了简单起见,我们假设所有)对传入文档的查询(这些文档不需要被索引,只能被发送用于渗透!)。实际上这个过程叫做渗透!如果任何文档与您的任何查询匹配,那么我会将结果发送给客户(也可能是您)!