2016-04-30 5 views
0

Ich habe ein Problem mit dem Verständnis, wie JSON-Objekt in Java zu machen. Ich muss bestimmte Daten von Elasticsearch durch Java bekommen und ich habe auch einen JSON, der funktioniert, aber ich habe keine Ahnung, wie man solche JSON mit Funktionen zur Verfügung stellt.make json mit elasticsearch Funktionen in Java

Ist es möglich, dies mit der SearchResponse Klasse und ihren Funktionen zu tun? Könnte QueryBuilder Hilfe?

Dies funktioniert mit der Sense-Plugin in Chrom:

GET _search 
{ 
"query": { 
    "constant_score": { 
     "filter": { 
      "and": { 
       "filters": [ 
        {"term": 
        {"_type":"budget"}      
        }, 
        {"term": 
        {"_index":"dbs_project"}      
        }, 
        {"term": 
        {"month":"x"}      
        }, 
        {"term": 
        {"account_id":"y"}      
        } 
       ] 
      } 
     }    
    } 
    } 
} 

Antwort

1

QueryBuilder sollten Sie auf jeden Fall funktionieren. Um eine Abfrage zu erstellen, wie Sie mit Hilfe der API benötigen, müssen Sie so etwas wie dies tun:

QueryBuilder query = QueryBuilders.constantScoreQuery(FilterBuilders.andFilter(FilterBuilders.termFilter("_type", "budget"), 
       FilterBuilders.termFilter("_index", "dbs_project"), FilterBuilders.termFilter("month", "x"), 
       FilterBuilders.termFilter("account_id", "y"))); 

Und Sie werden SearchResponse verwenden, um die Abfrage auszuführen und holen Ergebnisse wie folgt aus:

SearchResponse response = client.prepareSearch(index).setTypes(type) 
       .setQuery(query).execute() 
       .actionGet(); 

wo client ist die Instanz Ihrer TransportClient und index und type entsprechen dem ElasticSearch-Index und Typ, den Sie abfragen möchten.