ElasticSearch Java Client querying nested objects

前端 未结 1 501
傲寒
傲寒 2020-12-29 14:42

How do I convert this kind of query.

{
  \"query\": {
    \"nested\": {
      \"path\": \"consultations\",
      \"query\": {
        \"bool\": {
          \         


        
相关标签:
1条回答
  • 2020-12-29 15:09

    The folowing Java code will generate your query

    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);
    }
    

    The parameter propertyValues is:

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

    The parameter nestedPath is:

    consultations
    
    0 讨论(0)
提交回复
热议问题