我这个是出什么问题了(语言-java)

这个报错困扰了我好久,刚接触编程这东西,请热心人帮我看一看指点一下!

img

无法解析,即系统没有找到这个方法,所以报错!
该回答引用GPT:在您提供的代码中,有一些错误。这是一个修复后的代码:

SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
SearchHit[] searchHits = searchResponse.getHits().getHits();
ArrayList<Map<String, Object>> list = new ArrayList<>();
for (SearchHit hit : searchHits) {
  Map<String, Object> sourceMap = hit.getSourceAsMap();
  list.add(sourceMap);
}
return list;

这里主要进行了以下更改:

1.searchRequest.getHits()应该更改为searchResponse.getHits(),因为searchRequest只是请求对象,而searchResponse是响应对象。
2.documentFields应该更改为hit,因为它是for循环中的当前迭代对象。
3.getSourceAsMapO应该更改为getSourceAsMap(),因为后者是正确的方法名称。
希望这可以解决您的问题。

应该是返回值Response来getHits(),而不是请求Request。
参考这个:
https://blog.csdn.net/qq_32403063/article/details/102556739
https://blog.csdn.net/jassyzhen/article/details/117123023

用这个返回值遍历

img


例如

img

系统没有找到这个方法,报错!

这段代码是使用 Elasticsearch 的 Java 客户端对 Elasticsearch 进行搜索操作,并将结果解析为一个包含 Map 的 ArrayList。

具体来说,这段代码使用了 SearchSourceBuilder 来构建搜索请求。在这个搜索请求中,使用了 TermQueryBuilder 来进行精确匹配查询,查询的字段为 "title",查询的关键词为 keyword。同时,通过 from 和 size 方法设置了分页的起始位置和每页大小。设置了超时时间为 60 秒。

然后,将 SearchSourceBuilder 对象设置为 SearchRequest 的 source,通过 Elasticsearch 的高级 REST 客户端 restHighLevelClient 执行搜索请求,并将结果解析为一个 ArrayList,其中每个元素都是一个 Map,表示一个文档的字段和对应的值。

最后,将解析后的结果返回给调用者。

需要注意的是,这段代码中可能有一些打字错误,例如 QueryBilders 应该是 QueryBuilders,getHits0 应该是 getHits。

打开这个类,搜索一下有没有这个方法

错误提示:该类未找到这个方法。
正确的结果是 应该在78行 添加返回值SearchResponse 然后变量返回值获取到该方法

SearchResponse searchResponse =restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
 searchResponse.getHits().getHits();

作为初学者应该知其然知其所以然,已知问题该类未找到这个方法,应该反过来想是不是这个类错了或者调用的第三jar包版本问题。然后通过思路去解决这个问题。

应该是searchResponse

SearchResponse searchResponse = restTemplate.getClient().search(searchRequest, RequestOptions.DEFAULT);
                List<Map<String, Object>> mapList = new ArrayList<>();
                for (SearchHit hit : searchResponse.getHits().getHits()) {
                    list.add(hit.getSourceAsMap());
                }

```

在网络请求中 有两个关键的概念 在学习MVC中用的比较多
RequestResponse 即为 请求响应
在你的代码中 searchRequest 对应着是请求
xxx.getHits() 是期望从响应中获取结果,
.search(searchRequest, RequestOptions.DEFAULT) 方法是有返回值的, 返回值为SearchResponse
就是搜索响应 那么 你应该 这样写

// 调用restHighLevelClient 的搜索方法  传入 搜索请求 和选项请求选项  得到 搜索响应
  SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
// 准备容器接受结果
List< Map<String, Object>> list = new ArrayList<>();
// 遍历搜索响应
  for (SearchHit searchHits: searchResponse.getHits().getHits()) {
                    list.add(searchHits.getSourceAsMap());
                }
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7773416
  • 这篇博客你也可以参考下:听说,阿里大数据技术架构师终于把自己整理的java面试核心知识点框架篇文档给分享出来了?
  • 除此之外, 这篇博客: 去年秋招整理了这份后端开发的核心面试题(偏Java),献给正在校招的你中的 计算机网络 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 从网络加载一个10M的图片,说下注意事项
    • OSI网络体系结构与TCP/IP协议模型
    • TCP的3次握手和四次挥手
    • 为什么TCP链接需要三次握手,两次不可以么,为什么?
    • TCP协议如何来保证传输的可靠性
    • TCP与UDP的区别
    • TCP与UDP的有哪些应用
    • HTTP1.0与2.0的区别
    • HTTP报文结构
    • HTTP的长连接和短连接?
    • HTTP与HTTPS的区别以及如何实现安全性
    • 如何验证证书的合法性
    • Get与POST的区别
    • TCP的拥塞处理
    • TCP是如何进行流量控制
    • TCP和UDP分别对应的常见应用层协议
    • IP地址的分类
    • 有了唯一的Mac地址为啥还需要IP地址?
    • 交换机、集线器与路由器有什么区别?
    • 网桥的作用
    • ARP是地址解析协议,简单语言解释一下工作原理。
    • 网络接口卡(网卡)的功能?
    • IO中同步与异步,阻塞与非阻塞区别
    • URI和URL的区别
    • GET请求中URL编码的意义
    • 常见状态码及原因短语
    • 说说Session、Cookie 与 Application
    • 如何避免浏览器缓存
    • 什么是分块传送。
    • 谈谈SQL 注入
    • DDos 攻击
    • DDos攻击有那些预防方法?
    • 什么是XSS 攻击
    • 从输入网址到获得页面的过程
  • 您还可以看一下 李兴华老师的java核心技术精讲课程中的 可用链表 —— 清空链表数据小节, 巩固相关知识点