2017-02-22 3 views
0

と一致する必要があります:最小数万一マッチは、私がelasticsearch 5.2残りのエンドポイントを照会しようとしているPOST

{ 
    "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); 

答えて

1

与えられたクエリについて説明します。

"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 and js"も含まれていることを覚えておいてください。しかし、あなたのケースでは、各文書には一意のファイルソースがあるように見えるので、「cssとjs」がないのでAは空のセットになります。 "minimum_number_should_match": 2 - 削除してくださいファイル・ソース= CSSとJSS

を持たない文書が存在しないように、この場合Bでは

は空になります。それは動作するはずです。

+0

はい、あなたのやり方では、ファイルソース「JSON」と「XML」も返されます。私は** "唯一のXまたはY"を探していると思います** – Dexter

+1

"minimum_should_match"を追加してみてください:1 – mirdad

+0

はい、今はうまくいくと思います。私はminimum_number_should対minimum_shouldを理解していないと思います。なぜ "2"はうまくいかないのですか?しかし、 "1"は機能しますか?のような "1"、そのうちの1つが一致する必要があります。 2は私が推測している、両方存在する必要がありますか? – Dexter

関連する問題