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 org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -277,39 +278,26 @@ public class FileElasticsearchGateway {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据 fileName(带相对路径)批量查出 url
|
* 根据 fileName批量查出 url
|
||||||
*/
|
*/
|
||||||
public Map<String, String> getUrlsByFileNames(List<String> fileNames) {
|
public Map<String, String> getUrlsByFileNames(List<String> fileNames) {
|
||||||
Map<String, String> filePathUrlMap = new HashMap<>();
|
Map<String, String> result = new HashMap<>();
|
||||||
if (CollectionUtil.isEmpty(fileNames)) {
|
if (CollectionUtil.isEmpty(fileNames)) return result;
|
||||||
return filePathUrlMap;
|
List<List<String>> keywordGroups = fileNames.stream().map(Collections::singletonList).collect(Collectors.toList());
|
||||||
}
|
SearchResponse response = searchFileDocuments(keywordGroups, 1, fileNames.size());
|
||||||
// ES 批量 term 查询
|
for (SearchHit hit : response.getHits().getHits()) {
|
||||||
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
|
Map<String, Object> src = hit.getSourceAsMap();
|
||||||
boolQuery.must(QueryBuilders.termsQuery(FileEsField.FILENAME, fileNames));
|
String filename = String.valueOf(src.get(FileEsField.FILENAME));
|
||||||
boolQuery.filter(QueryBuilders.rangeQuery(FileEsField.EXPIRE_TIME)
|
String url = String.valueOf(src.get("url"));
|
||||||
.gte(System.currentTimeMillis())
|
// 严格精确匹配
|
||||||
.timeZone("+08:00"));
|
if (fileNames.contains(filename)) {
|
||||||
|
result.put(filename, url);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
|
||||||
log.error("[getUrlsByFileNames] error.", e);
|
|
||||||
}
|
}
|
||||||
return filePathUrlMap;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user