最小数量应匹配,应与POST匹配

时间:2017-02-22 19:21:36

标签: java elasticsearch

我试图查询elasticsearch 5.2 rest端点:

{
    "query": {
        "bool": {
            "should": [
                {"match": { "file-source": "css" }},
                {"match": { "file-source": "js" }}
            ],
            "minimum_number_should_match": 2
        }
    }
}

但是,这会在ElasticSearch中返回NO HITS,我不明白为什么这不起作用,而ElasticSearch文档的例子非常少。

我试图匹配两者。但它可能是OR。

有文件来源:" css",文件来源:" js",文件来源:" json"

但我想选择BOTH CSS和JS ......

这是使用Java API测试相同代码时的一些示例Java代码:

// conditions met from the form
query.should(QueryBuilders.matchQuery("file-source", "css"));
query.should(QueryBuilders.matchQuery("file-source", "js"));
query.minimumNumberShouldMatch(2);

1 个答案:

答案 0 :(得分:1)

让我们解释给定的查询。

This will calculate shipping, handling and taxes on your purchase
Enter your subtotal please: 300
This is a valid amount
There is no handling fee

Product Total Information
    Subtotal: $300.0
    Shipping: $30.0
    Handling: $0
    Sales tax: $18.0
    Grand total: $348.0

这将返回所有文件源为css或js的文档。

"should": [
            {"match": { "file-source": "css" }},
            {"match": { "file-source": "js" }}
        ]

这将缩小结果范围并将A限制为同时具有css和js的文档。记住“css OR js”也包含“css和js”。但在这种情况下,似乎每个文档都有唯一的文件源,所以A将成为一个空集,因为没有“css和js”。

在这种情况下,B变为空,因为没有文件具有file-source = css和jss

尝试删除 - A = <documents with file-source = css or jss> "minimum_number_should_match": 2 B = A <documents with file-source at least 2 of css, jss> 。它应该工作。