public List<LogLineEntry> query(){
List<LogLineEntry> timeRange = new ArrayList<LogLineEntry>();
Settings settings = Settings.settingsBuilder().put("cluster.name", "elasticsearch").build();
Client client = TransportClient.builder().settings(settings).build().addTransportAddress((TransportAddress) new InetSocketTransportAddress(new InetSocketAddress("127.0.0.1", 9300)));
SearchResponse sResponse = null;
QueryBuilder qb = QueryBuilders.rangeQuery("lineNumber").from(100).to(200);
while(sResponse== null|| sResponse.getHits().hits().length != 0){
int scrollSize=200, i=0;
sResponse = client.prepareSearch("jsonlogpage")
.setTypes("jsonlog")
.setQuery(QueryBuilders.matchAllQuery())
.setSize(scrollSize)
.setFrom(i * scrollSize)
.execute()
.actionGet();
for(SearchHit hit : sResponse.getHits()){
timeRange.add(hit); //add() shows error
}
i++;
}
return timeRange;
}
我正在使用搜索響應。我在add()中出錯。如何清除java中的ClassCastException?
錯誤:爲LogLineEntry創建
Exception in thread "main" java.lang.ClassCastException: org.elasticsearch.search.internal.InternalSearchHit cannot be cast to com.example.elasticsearch.LogLineEntry
LogLineEntry一個POJO class.My列表時,按變量屬於searchHit。所以我不能將searchHit變量添加到List中。我該如何解決這個問題?
你命中需要把它從命中變量,並創建新的'LogLineEntry'裏面的for循環,並設置值的LnLineEntry對象,然後添加對象列出 –