簡體   English   中英

最小數量應匹配,應與POST匹配

[英]Minimum Number Should Match, Should match with POST

我正在嘗試查詢elasticsearch 5.2 rest終結點:

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

但是,這在ElasticSearch中沒有返回任何結果,我不明白為什么這不起作用,並且ElasticSearch文檔中只有很少的示例。

我正在嘗試兩者都匹配。 但這可能是OR。

有文件源:“ css”,文件源:“ js”,文件源:“ json”

但是我想同時選擇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);

讓我們解釋給定的查詢。

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

這將返回所有文件源為css或js的文檔。

      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>

這將縮小結果范圍,並將A限制為同時具有css和js的文檔。 請記住,“ css OR js”也包含“ css和js”。 但是在您的情況下,似乎每個文檔都具有唯一的文件源,因此A將成為空集,因為沒有“ css和js”。

在這種情況下,由於沒有文檔具有file-source = css和jss,因此B變為空

嘗試刪除- "minimum_number_should_match": 2 它應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM