Elasticsearch:按术语频率过滤(或查询)

时间:2015-06-22 23:00:27

标签: elasticsearch

如何运行一个弹性搜索查询,该查询仅返回文档中至少Y次提到的术语X的结果?

例如,假设您在所有索引文档中都有一个页脚,例如copyright 2013。假设当用户搜索术语copyright时,您希望变得聪明并且只显示那些单词copyright两次的文档(否则您将返回所有文档)。我知道有多种方法可以实现这一点,但一种方法是运行一个过滤器,只返回那些使用术语版权两次的文档。这样的过滤器是否存在?

我可以想象这样的东西,但我在文档中看不到任何可比的东西:

"filter" : {
            "term" : { "user" : "copyright"},
            "frequency" : { "gt" : 1 }
        }

考虑到Elasticsearch存储术语频率,我希望这可以实现。

1 个答案:

答案 0 :(得分:3)

使用copyright中的user _index['user']['copyright'].tf() { "query": { "filtered": { "filter": { "script": { "script": "_index['name'][term_to_lookup].tf() > occurrences", "params": { "term_to_lookup": "copyright", "occurrences": 1 } } } } } } {{1}} {{1}} {{1}}

{{1}}