2016-04-30 27 views
0

我在理解如何在java中創建json對象時遇到了問題。 我必須通過java獲得elasticsearch的某些數據,我也有一個json的功能,但我不知道如何使這些json的功能可用。在java中使用elasticsearch函數創建json

是否可以使用SearchResponse類和它的函數做到這一點? 可能QueryBuilder有幫助嗎?

這工作與意識的插件在Chrome:

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

回答

1

QueryBuilder一定要爲你工作。要建立一個查詢像你需要使用API​​,你需要做這樣的事情:

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

你會使用SearchResponse執行查詢並獲取結果是這樣的:

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

哪裏client是您的TransportClientindextype的實例對應於您想查詢的elasticsearch索引和類型。