fix
This commit is contained in:
parent
d4e0d06ded
commit
69a3a1bb49
@ -33,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -277,39 +278,26 @@ public class FileElasticsearchGateway {
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据 fileName(带相对路径)批量查出 url
|
||||
* 根据 fileName批量查出 url
|
||||
*/
|
||||
public Map<String, String> getUrlsByFileNames(List<String> fileNames) {
|
||||
Map<String, String> filePathUrlMap = new HashMap<>();
|
||||
if (CollectionUtil.isEmpty(fileNames)) {
|
||||
return filePathUrlMap;
|
||||
}
|
||||
// ES 批量 term 查询
|
||||
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
|
||||
boolQuery.must(QueryBuilders.termsQuery(FileEsField.FILENAME, fileNames));
|
||||
boolQuery.filter(QueryBuilders.rangeQuery(FileEsField.EXPIRE_TIME)
|
||||
.gte(System.currentTimeMillis())
|
||||
.timeZone("+08:00"));
|
||||
|
||||
SearchSourceBuilder builder = new SearchSourceBuilder()
|
||||
.query(boolQuery)
|
||||
.size(fileNames.size()); // 最多查 fileNames.size() 条
|
||||
SearchRequest request = new SearchRequest(INDEX_NAME).source(builder);
|
||||
|
||||
try {
|
||||
SearchResponse response = esClient.search(request, RequestOptions.DEFAULT);
|
||||
for (SearchHit hit : response.getHits().getHits()) {
|
||||
Map<String, Object> src = hit.getSourceAsMap();
|
||||
String filePath = String.valueOf(src.get(FileEsField.FILEPATH));
|
||||
String url = String.valueOf(src.get("url"));
|
||||
filePathUrlMap.put(filePath, url);
|
||||
Map<String, String> result = new HashMap<>();
|
||||
if (CollectionUtil.isEmpty(fileNames)) return result;
|
||||
List<List<String>> keywordGroups = fileNames.stream().map(Collections::singletonList).collect(Collectors.toList());
|
||||
SearchResponse response = searchFileDocuments(keywordGroups, 1, fileNames.size());
|
||||
for (SearchHit hit : response.getHits().getHits()) {
|
||||
Map<String, Object> src = hit.getSourceAsMap();
|
||||
String filename = String.valueOf(src.get(FileEsField.FILENAME));
|
||||
String url = String.valueOf(src.get("url"));
|
||||
// 严格精确匹配
|
||||
if (fileNames.contains(filename)) {
|
||||
result.put(filename, url);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
log.error("[getUrlsByFileNames] error.", e);
|
||||
}
|
||||
return filePathUrlMap;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user