Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中清除ClassCastException? 公共列表查询(){ 列表时间范围=新建ArrayList(); Settings=Settings.settingsBuilder().put(“cluster.name”,“elasticsearch”).build(); Client Client=TransportClient.builder().settings(settings.build().addTransportAddress((TransportAddress)新的InetSocketTransportAddress(新的InetSocketAddress(“127.0.0.1”,9300)); SearchResponse sResponse=null; QueryBuilder qb=QueryBuilders.rangeQuery(“行号”)。从(100)到(200); while(sResponse==null | | sResponse.getHits().hits().length!=0){ int scrollSize=200,i=0; sResponse=client.prepareSearch(“jsonlogpage”) .setTypes(“jsonlog”) .setQuery(QueryBuilders.matchAllQuery()) .setSize(滚动大小) .setFrom(i*scrollSize) .execute() .actionGet(); for(SearchHit:sResponse.getHits()){ timeRange.add(hit);//add()显示错误 } i++; } 返回时间范围; }_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

如何在java中清除ClassCastException? 公共列表查询(){ 列表时间范围=新建ArrayList(); Settings=Settings.settingsBuilder().put(“cluster.name”,“elasticsearch”).build(); Client Client=TransportClient.builder().settings(settings.build().addTransportAddress((TransportAddress)新的InetSocketTransportAddress(新的InetSocketAddress(“127.0.0.1”,9300)); SearchResponse sResponse=null; QueryBuilder qb=QueryBuilders.rangeQuery(“行号”)。从(100)到(200); while(sResponse==null | | sResponse.getHits().hits().length!=0){ int scrollSize=200,i=0; sResponse=client.prepareSearch(“jsonlogpage”) .setTypes(“jsonlog”) .setQuery(QueryBuilders.matchAllQuery()) .setSize(滚动大小) .setFrom(i*scrollSize) .execute() .actionGet(); for(SearchHit:sResponse.getHits()){ timeRange.add(hit);//add()显示错误 } i++; } 返回时间范围; }

如何在java中清除ClassCastException? 公共列表查询(){ 列表时间范围=新建ArrayList(); Settings=Settings.settingsBuilder().put(“cluster.name”,“elasticsearch”).build(); Client Client=TransportClient.builder().settings(settings.build().addTransportAddress((TransportAddress)新的InetSocketTransportAddress(新的InetSocketAddress(“127.0.0.1”,9300)); SearchResponse sResponse=null; QueryBuilder qb=QueryBuilders.rangeQuery(“行号”)。从(100)到(200); while(sResponse==null | | sResponse.getHits().hits().length!=0){ int scrollSize=200,i=0; sResponse=client.prepareSearch(“jsonlogpage”) .setTypes(“jsonlog”) .setQuery(QueryBuilders.matchAllQuery()) .setSize(滚动大小) .setFrom(i*scrollSize) .execute() .actionGet(); for(SearchHit:sResponse.getHits()){ timeRange.add(hit);//add()显示错误 } i++; } 返回时间范围; },java,elasticsearch,Java,elasticsearch,我正在使用搜索响应。我在add()中出错 错误: 线程“main”java.lang.ClassCastException中的异常:org.elasticsearch.search.internal.InternalSearchHit无法转换为com.example.elasticsearch.LogLineEntry LogLineEntry是一个pojo类。我的列表是为LogLineEntry创建的,hit变量属于searchHit。所以我无法将searchHit变量添加到列表中。如何解决此

我正在使用搜索响应。我在add()中出错

错误:

线程“main”java.lang.ClassCastException中的异常:org.elasticsearch.search.internal.InternalSearchHit无法转换为com.example.elasticsearch.LogLineEntry


LogLineEntry是一个pojo类。我的列表是为LogLineEntry创建的,hit变量属于searchHit。所以我无法将searchHit变量添加到列表中。如何解决此问题?

您需要将每个
SearchHit
转换为
LogLineEntry
实例。您不能只将
SearchHit
实例添加到声明包含
LogLineEntry
实例的
列表中

因此,在for循环中,您需要创建一个新的
LogLineEntry
实例,并用在每个
SearchHit
实例中找到的字段填充它

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;

}

您需要将每个
SearchHit
转换为
LogLineEntry
实例。您不能只将
SearchHit
实例添加到声明包含
LogLineEntry
实例的
列表中

因此,在for循环中,您需要创建一个新的
LogLineEntry
实例,并用在每个
SearchHit
实例中找到的字段填充它

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;

}

从hit中需要的任何值从hit变量中获取,并在for循环内创建新的
LogLineEntry
,将该值设置为LnLineEntry对象,然后将该对象添加到列表中,从hit中需要的任何值从hit变量中获取,并在for循环内创建新的
LogLineEntry
,并将该值设置为当我创建entry.setXyz(hit.getXyz())时,LnLineEntry对象将该对象添加到listThank you Val中;错误显示将强制转换添加到命中条目。setLineNumber(((LogLineEntry)hit.getLineNumber());这是否正确?否,
entry.setLineNumber(hit.getSource().get(“lineNumber”))
setLineNumber数据类型很长。它显示了错误。。我可以使用entry.setLineNumber((长)hit.getSource().get(“lineNumber”));或者我应该在pojo类中将long改为Object吗?我很抱歉打扰你。现在还有一个错误,线程“main”java.lang.ClassCastException中的异常:java.lang.Integer不能转换为java.lang.Long,我没有int变量。我强烈建议您在深入研究更复杂的内容之前,先参加一个简短的java速成课程,学习语言基础知识:-)在创建entry.setXyz(hit.getXyz())时谢谢您Val;错误显示将强制转换添加到命中条目。setLineNumber(((LogLineEntry)hit.getLineNumber());这是否正确?否,
entry.setLineNumber(hit.getSource().get(“lineNumber”))
setLineNumber数据类型很长。它显示了错误。。我可以使用entry.setLineNumber((长)hit.getSource().get(“lineNumber”));或者我应该在pojo类中将long改为Object吗?我很抱歉打扰你。现在还有一个错误,线程“main”java.lang.ClassCastException中的异常:java.lang.Integer不能转换为java.lang.Long,我没有int变量。我强烈建议您在深入研究更复杂的内容之前,先参加一个简短的java速成课程,学习语言基础知识:-)