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;
}
Ich verwende Suchantwort. Ich habe einen Fehler in add().Wie kann ich ClassCastException in Java deaktivieren?
Fehler:
Exception in thread "main" java.lang.ClassCastException: org.elasticsearch.search.internal.InternalSearchHit cannot be cast to com.example.elasticsearch.LogLineEntry
LogLineEntry eine pojo class.My Liste wird für LogLineEntry erstellt, schlagen Variable gehört zu searchHit. Daher kann ich die searchHit-Variable nicht in die Liste aufnehmen. Wie kann ich das beheben?
, was Sie von Hit es aus dem Treffer Variable nehmen benötigte Werte und neuen 'LogLineEntry' innerhalb der for-Schleife und setzen Sie diesen Wert auf das LnLineEntry Objekt hinzufügen, dann das Objekt –