2017-10-13 10 views
0

La requête multi_match prend en charge les champs augmentant par la notation^dans le domaine JSON comme ci-dessousComment définir le boost pour chaque champ en utilisant MultiMatchQueryBuilder?

{ 
    "multi_match" : { 
     "query" : "this is the best", 
     "fields" : [ "number^5", "description^2" ] 
    } 
} 

Je veux obtenir la même chose en utilisant api java, je suis donc en utilisant MultiMatchQueryBuilder pour construire la requête comme suit:

final MultiMatchQueryBuilder query 
     = new MultiMatchQueryBuilder(keyword, "number^5", "description^2"); 

Mais élastique recherche api convertit cette requête comme suit:

{ 
    "multi_match" : { 
     "query" : "this is the test", 
     "fields" : [ 
      "number^5.0^1.0", 
      "description^2.0^1.0" 
     ], 
     "type" : "best_fields", 
     "operator" : "OR", 
     "slop" : 0, 
     "prefix_length" : 0, 
     "max_expansions" : 50, 
     "lenient" : false, 
     "zero_terms_query" : "NONE", 
     "boost" : 1.0 
    } 
} 

Quelle devrait être la bonne façon définir un boost pour chaque champs de la requête?

Répondre

0

Essayez ceci:

final MultiMatchQueryBuilder query 
     = new MultiMatchQueryBuilder(keyword).field("number",5).field("description",2);