5

Bu tür bir sorguyu nasıl dönüştürürüm? Parametre nestedPath olduğunuElasticSearch Java İstemci iç içe geçmiş nesneleri sorgulama

Map<String, String> propertyValues = new HashMap<String, String>(); 
propertyValues.put("consultations.prescriptions", "alfuorism"); 
propertyValues.put("consultations.Diagnosis", "Fever"); 

: Java Client sorgusu için

{ 
    "query": { 
    "nested": { 
     "path": "consultations", 
     "query": { 
     "bool": { 
      "must": [ 
      { 
       "match": { 
       "consultations.prescriptions": "alfuorism" 
       } 
      }, 
      { 
       "match": { 
       "consultations.Diagnosis": "Fever" 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

kullanarak QueryBuilders

cevap

8

folowing Java kodu parametresi propertyValues olduğunu

public NestedQueryBuilder nestedBoolQuery(final Map<String, String> propertyValues, final String nestedPath) { 

    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); 
    Iterator<String> iterator = propertyValues.keySet().iterator(); 

    while (iterator.hasNext()) { 
     String propertyName = iterator.next(); 
     String propertValue = propertyValues.get(propertyName); 
     MatchQueryBuilder matchQuery = QueryBuilders.matchQuery(propertyName, propertValue); 
     boolQueryBuilder.must(matchQuery); 
    } 

    return QueryBuilders.nestedQuery(nestedPath, boolQueryBuilder); 
} 

sorgu oluşturur:

consultations