2017-02-10 11 views
3

私は、指定された大学と名前からのユーザーの選択を実装しようとしています。ここには、あいまいなクエリがあります。 以下は弾性検索のクエリです(v5.1.2)。これは私に望ましい結果をもたらします。しかし、私はこの使用して、次のJava APIを実装しようとしたJavaの弾性検索で曖昧なBoolクエリJavaクライアント

{ 
    "query" : { 
     "bool": { 
      "must" : [{ 
       "match": { 
        "collegeAccountCode": "DIT" 
       } 
      }, 
      { 
       "match": { 
        "name" : { 
         "query": "Rahul", 
         "fuzziness" : "AUTO" 
        } 
       } 
      }] 
     } 
    } 
} 

でエラー(V5.1.2)

QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("name", studentName).fuzziness()) 
      .must(QueryBuilders.matchQuery("collegeAccountCode", AccountId)); 

を与えるしかし、私はというエラーを取得:

"The method must(QueryBuilder) in the type BoolQueryBuilder is not applicable for the arguments 
(Fuzziness)" 

どのようにこのエラーを修正するか、このクエリを実装する他の方法がありますか?

QueryBuilders.boolQuery() 
       .must(QueryBuilders.matchQuery("name", "Rahul").fuzziness(Fuzziness.AUTO)) 
       .must(QueryBuilders.matchQuery("collegeAccountCode", "DIT")); 

コードの一部、説明:

答えて

2

問題は、パラメータを指定せずにそのメソッドfuziness()は明らかにmust()によって期待される、とあなたはこのような何かをする必要はありませんされている現在のFuzzinessを返し、あります問題はもう少し:

/** Sets the fuzziness used when evaluated to a fuzzy query type. Defaults to "AUTO". */ 
    public MatchQueryBuilder fuzziness(Object fuzziness) { 
     this.fuzziness = Fuzziness.build(fuzziness); 
     return this; 
    } 

    /** Gets the fuzziness used when evaluated to a fuzzy query type. */ 
    public Fuzziness fuzziness() { 
     return this.fuzziness; 
    } 

あなたが最初のものを呼び出す必要がありながら、あなたは、第二の方法と呼ばれます。

+0

ありがとうございました。私はこれが問題になるとは考えていませんでした。あなたはそれをとてもうまく説明しました。 –

+0

また、デフォルトのAUTOと書かれていますので、引数を指定する必要はありません。 –

関連する問題