2016-09-29 112 views
-1

我在java 1.7.5中使用elastichsearch,并在控制台查询后我想将以下代码转换为java代码。这是一个具有多个子聚合的查询,并导致我的困惑。将elasticsearch查询转换为具有多聚合的java

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "range": { 
      "rawlog.auAid": { 
       "from": "3007145536" 
      } 
      } 
     }, 
     { 
      "term": { 
      "rawlog.ip": "118.70.204.171" 
      } 
     } 
     ], 
     "must_not": [], 
     "should": [] 
    } 
    }, 
    "aggs": { 
    "articles_over_time": { 
     "date_histogram": { 
     "field": "loggedTime", 
     "interval": "second" 
     }, 
     "aggs": { 
     "id": { 
      "terms": { 
      "field": "auAid" 
      } 
     }, 
     "url": { 
      "terms": { 
      "field": "urlId1" 
      } 
     }, 
     "devVerId": { 
      "terms": { 
      "field": "devVerId" 
      } 
     }, 
     "devTypeId": { 
      "terms": { 
      "field": "devTypeId" 
      } 
     }, 
     "osVerId": { 
      "terms": { 
      "field": "osVerId" 
      } 
     }, 
     "browserId": { 
      "terms": { 
      "field": "browserId" 
      } 
     } 
     } 
    } 
    } 
} 

任何人都可以帮我执行它吗?非常感谢

+0

你使用的是java传输到Java REST客户端的elasticsearch?你可以包括你尝试转换它的java代码吗? – Phil

+0

我在使用传输客户端在elastichSearch 1.7.5 - – VanThaoNguyen

+0

查看http://javadoc.kyubu.de/elasticsearch/HEAD/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramBuilder.html – Phil

回答

0

你有你的文件herehere在需要的一切,但它基本上是这样的:

// 1. build the query 
QueryBuilder qb = boolQuery() 
    .must(rangeQuery("rawlog.auAid").from(3007145536))  
    .must(termQuery("rawlog.ip", "118.70.204.171")); 

// 2. build the aggregations 
AggregationBuilder articlesOverTime = 
    AggregationBuilders 
      .dateHistogram("articles_over_time") 
      .field("loggedTime") 
      .interval(DateHistogramInterval.SECOND); 
articlesOverTime.subAggregation(AggregationBuilders.terms("id").field("auAid")); 
articlesOverTime.subAggregation(AggregationBuilders.terms("url").field("urlId1")); 
articlesOverTime.subAggregation(AggregationBuilders.terms("devVerId").field("devVerId")); 
articlesOverTime.subAggregation(AggregationBuilders.terms("devTypeId").field("devTypeId")); 
articlesOverTime.subAggregation(AggregationBuilders.terms("osVerId").field("osVerId")); 
articlesOverTime.subAggregation(AggregationBuilders.terms("browserId").field("browserId")); 

// 3. make the query 
SearchResponse sr = node.client().prepareSearch() 
    .setQuery(qb) 
    .addAggregation(articlesOverTime) 
    .execute().actionGet(); 
+0

你能看看在这个https://stackoverflow.com/questions/45953306/how-to-covert-this-elastic-search-functional-score-query-to-java-api – praveen

相关问题