从Elasticsearch获取必填字段

时间:2015-08-09 10:18:42

标签: java elasticsearch elasticsearch-java-api

我的弹性搜索中有以下字段

viewModel: function (params) {
              this.pGrid = ko.observable();
              this.pPager = ko.observable();
           }

我只想使用java api从elasticsearch中获取cpu_stat_s和memory_stat_s字段,我搜索了查询过滤器并且也做了

"_source": {
"@timestamp": 
"cpu_stat_s": {
"temp_in_celsius":
"model_name":,
"cpu_MHz_String": ,
"cache_size_string": 
},

"memory_stat_s": {
"total_memory": ,
"swap_total": ,
"swap_free": ,
"used": ,
"free": ,
"swap_used": 
},
"process_stat_s": [
{
"process_name": ,
"mem_in_use":,
"process_pid": 
}
]

但是我收到了所有字段而不是必填字段。

我可以通过获取所有字段然后使用for循环并从响应获取源来实现这一点但是它会增加数十亿条记录的CPU时间。我是弹性搜索的新手,因此它会很棒帮助,如果有人可以帮助我

1 个答案:

答案 0 :(得分:0)

经过最后的研究,我找到了答案

SearchResponse response = client.prepareSearch("cn_*")
                       .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
                        .setFrom(0).setSize(10).setExplain(true)
                        .setPostFilter(FilterBuilders.rangeFilter("@timestamp").from(TIMESTAMP_FROM).to(TIMESTAMP_TO))
                        .setFetchSource(new String[]{"ether_stat_s"}, null)
                        .execute()
                       .actionGet();