RestHighLevelClient 查询的时候,返回map里面有null字符串,如何解决
时间: 2024-03-15 22:45:21 浏览: 10
如果使用 RestHighLevelClient 查询时返回的 Map 中有 null 字符串,可以通过使用 ObjectMapper 对返回结果进行处理,将其中的 null 字符串替换为 null 值。
具体做法是,在查询时指定返回结果的类型为 LinkedHashMap,然后在获取结果后,遍历 Map 中的所有键值对,将值为 null 字符串的键值对的值替换为 null 值,示例代码如下:
```java
SearchRequest searchRequest = new SearchRequest(index);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
List<Map<String, Object>> resultList = new ArrayList<>();
for (SearchHit hit : searchResponse.getHits().getHits()) {
Map<String, Object> sourceMap = hit.getSourceAsMap();
Map<String, Object> resultMap = new LinkedHashMap<>();
for (Map.Entry<String, Object> entry : sourceMap.entrySet()) {
if (entry.getValue() != null && entry.getValue().equals("null")) {
resultMap.put(entry.getKey(), null);
} else {
resultMap.put(entry.getKey(), entry.getValue());
}
}
resultList.add(resultMap);
}
```
这样就可以将返回结果中的 null 字符串替换为 null 值。
阅读全文