2017-03-08 1 views
0

i die maximun ID verwenden möge erhalten ein Teilfeld eines Eignungs Objekt bilden,wie maxAggregation im Scherz Elasticsearch

{ 
"mappings": { 
    "aptitude": { 
     "dynamic": "strict", 
     "properties": { 
      "id": { 
       "type": "long" 
      }, 
      "es": { 
       "type": "text" 
      }, 
      "en": { 
       "type": "text" 
      }, 
      "behaviors": { 
       "properties": { 
        "id": { 
         "type": "long" 
        }, 
        "es": { 
         "type": "text" 
        }, 
        "en": { 
         "type": "text" 
        } 
       } 
      } 
     } 
    } 
} 

, wie Sie die Fähigkeit eine Reihe von Verhaltensweisen haben sehen können, die eine ID wiederum haben, afaik Ich sollte die MaxAggregation von Jest verwenden, kann aber kein anständiges Beispiel dafür finden, wie man es in Java macht, kann jemand helfen?

Antwort

0

fand ich die Art und Weise wie folgt aus:

String query = "{\n" 
      +" \"query\" : {\n" 
      +"  \"match\" : {\"id\":" + aptitudeId + "}\n" 
      +" },\n" 
      +" \"aggs\" : {\n" 
      +"  \"max1\" : {\n" 
      +"   \"max\" : {\n" 
      +"    \"field\" : \"behaviors.id\"\n" 
      +"   }\n" 
      +"  }\n" 
      +" }\n" 
      +"}"; 

i wurde in die Aggregation Bauer aus Scherz aus, aber es über Abfrage war viel einfacher zu tun.

die Rückkehr sieht wie folgt aus:

Search search = new Search.Builder(query) 
      .addIndex(aptitudeIndexName) 
      .addType(aptitudeTypeName) 
      .build(); 

    try { 
     SearchResult result = client.execute(search); 


     MaxAggregation max1 = result.getAggregations().getMaxAggregation("max1"); 
     Double max = max1.getMax(); 
     return max.longValue() + 1;//so it would add 1 to the current maximum id 
Verwandte Themen