如何返回文档中出现字符串的所有文档至少N次

时间:2016-03-16 21:13:02

标签: elasticsearch

如果我想返回包含术语beetlejuice的所有文档,我可以使用像

这样的查询
{
    "bool":{
        "should":[
            {
                "term":{
                    "description":"beetlejuice"
                }
            }
        ]
    }
}

目前尚不清楚如何将描述字段中包含字符串beetlejuice的所有文档至少返回3次。我看到minimum_should_match,但我认为这将用于bool中的单独查询。当文档的描述字段中出现一个单词至少N次时,如何设置查询以匹配?

1 个答案:

答案 0 :(得分:0)

您可以使用scripting来达到您想要的效果。

基本上,您需要的只是文档字段中所需术语的term frequency,您可以使用脚本访问该值。

_index['FIELD']['TERM'].tf()

示例过滤器脚本:

"filter" : {
    "script" : {
        "script" : "_index['description']['beetlejuice'].tf() > N",
        "params" : {
            "N" : 2
        }
    }
}