【发布时间】:2014-02-27 11:37:43
【问题描述】:
尽管我阅读了 Elasticsearch 的文档以了解什么是过滤器。我仍然很难理解它的含义以及它的简单用途。谁能提供更多细节?
【问题讨论】:
-
在这里。我将 ES 文档阅读了四次,尽管我确信我知道他们在说什么,但文档根本没有说清楚。
标签: java lucene elasticsearch search-engine
尽管我阅读了 Elasticsearch 的文档以了解什么是过滤器。我仍然很难理解它的含义以及它的简单用途。谁能提供更多细节?
【问题讨论】:
标签: java lucene elasticsearch search-engine
您通常做的是索引文档并通过查询将它们取回。简而言之,渗透器允许您做的是索引您的查询并根据索引查询过滤文档以了解它们匹配哪些查询。它也被称为反向搜索,因为你所做的与你习惯的相反。
渗透器有不同的用例,第一个是存储用户兴趣的任何平台,以便在它进入时立即将正确的内容发送给正确的用户。
例如,一个用户订阅了一个特定的主题,一旦该主题的新文章出现,就会向感兴趣的用户发送通知。您可以使用query DSL 将用户兴趣表达为elasticsearch 查询,并且可以将其注册到elasticsearch 中,因为它是一个文档。每次发布新文章,无需对其进行索引,您就可以对其进行渗透,以了解哪些用户对它感兴趣。此时您知道谁需要接收包含文章链接的通知(但发送通知不是由 elasticsearch 完成的)。另一个步骤是索引内容本身,但这不是必需的。
查看this presentation 以了解从 elasticsearch 1.0 开始与 percolator 结合使用的其他几个用例和其他功能。
【讨论】:
A common misconception for those new to Percolator is that alerting is a side-effect of inserting documents, similar to a database trigger. This is not the case.
简单来说percolator 是这样做的:
用户:嘿渗透器!你有什么可以帮助我的吗?
渗滤器: Hai 用户!我可以帮助您获得您感兴趣的提醒。
用户:太好了!接下来我该怎么做?
Percolator:请以 Elasticsearch 中索引查询的形式告诉我您的兴趣。
用户:我已经准备好所有我感兴趣的查询,并将它们编入 Elasticsearch 中。就这么简单吗?
渗滤器:是的!就是这么简单!我会查看所有传入的文件,如果它们与您的任何兴趣(查询)相匹配,我会回复您!
用户:太棒了!我只是好奇,想知道怎么能 你找出哪些文件符合我的兴趣。
渗滤器:这是个好问题!答案很简单!您已将您的兴趣作为查询索引到 Elasticsearch 中,对吗?我使用它们并针对传入文档运行所有这些(不完全是,但为了简单起见,我们假设所有)查询(这些文档不需要被索引,可以只发送用于过滤!)。事实上,这个过程被称为渗透!如果任何文档与您的任何查询匹配,那么我会将结果发送给客户(也可能是您)!
【讨论】:
在后台,percolate query 将获取您想要渗透的内容(例如,您想要提醒的那篇新闻文章),Elasticsearch 将使用该文档创建一个微小的内存索引。
您会有一堆已注册的查询(例如,每个用户的偏好都有一个)。最初,Elasticsearch 会预先过滤可能匹配的查询,然后运行那些可能匹配的查询。很像以前的Luwak(现在是Lucene Monitor)。
至少对于警报用例来说,经验法则是:
我还看到人们使用 percolator 来标记文档,但是在索引管道中实现一些自定义的东西来做到这一点听起来更合乎逻辑。
【讨论】: