feat: There is no way the, 优化ES 优到什么时候

This commit is contained in:
super_liu
2022-05-04 16:14:10 +08:00
parent d10099e227
commit 9c9793ad63
@@ -80,7 +80,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery();
BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery();
updateIndex(searchInfoEO.getSelectIndex(),(searchInfoEO.getPage()-1)*searchInfoEO.getPageSize(),searchInfoEO.getPageSize());
updateIndex(searchInfoEO.getSelectIndex());
searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex())
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize())
@@ -207,10 +207,17 @@ public class SearchCenterServiceImpl implements SearchCenterService {
BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery();
BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery();
updateIndex(searchInfoEO.getSelectIndex(),(searchInfoEO.getPage()-1)*searchInfoEO.getPageSize(),searchInfoEO.getPageSize());
updateIndex(searchInfoEO.getSelectIndex());
String sortField = "";
if("laws".equals(searchInfoEO.getSelectIndex())){
sortField = "lawsYear";
}else {
sortField = "standYear";
}
searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex())
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize())
.addSort(sortField, SortOrder.DESC)
.addSort("issue_time_data", SortOrder.DESC)
.setSize(searchInfoEO.getPageSize());
@@ -322,7 +329,34 @@ public class SearchCenterServiceImpl implements SearchCenterService {
//在结果中检索
if (StringUtils.isNotEmpty(searchInfoEO.getSelectValue()) && !isRqFormat(searchInfoEO.getSelectValue())) {
QueryBuilder multiQuery = queryInResult(searchInfoEO);
boolQueryBuilder.must(multiQuery);
BoolQueryBuilder boolSelectValue = new BoolQueryBuilder();
boolSelectValue.should(multiQuery);
switch (searchInfoEO.getSelectIndex()){
case "stand":
boolSelectValue
.should(QueryBuilders.wildcardQuery("standSort.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1005f))
.should(QueryBuilders.wildcardQuery("standNumber.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1003f))
.should(QueryBuilders.wildcardQuery("standYear.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1002f))
.should(QueryBuilders.wildcardQuery("stand_name.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1000f));
break;
case "laws":
boolSelectValue
.should(QueryBuilders.wildcardQuery("lawsType.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1005f))
.should(QueryBuilders.wildcardQuery("lawsNumber.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1003f))
.should(QueryBuilders.wildcardQuery("lawsYear.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1002f))
.should(QueryBuilders.wildcardQuery("lawsName.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1001f));
break;
case "bussstand":
boolSelectValue
.should(QueryBuilders.wildcardQuery("standSort.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1005f))
.should(QueryBuilders.wildcardQuery("standNumber.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1003f))
.should(QueryBuilders.wildcardQuery("standYear.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1002f))
.should(QueryBuilders.wildcardQuery("stand_name.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1000f));
break;
default: break;
}
boolQueryBuilder.must(boolSelectValue);
}
searchRequestBuilder.setQuery(boolQueryBuilder).setTrackTotalHits(true);
@@ -764,10 +798,10 @@ public class SearchCenterServiceImpl implements SearchCenterService {
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
List<String> fieldList = getStringField(searchInfoEO);
List<String> fieldNameList = new ArrayList<>();
String[] standStr = {"content","standSort","standNumber","standYear","stand_name","standEnName","standNatureName",
String[] standStr = {"content","standEnName","standNatureName",
"textStatusName","isRelateAccessName","numbershow","standSystem","NYLXCLASS","CLLX"};
String[] lawsStr = {"content","lawsType","lawsNumber","lawsName","lawsEnName","lawsNo","issueCompany","lawsTextState","lawsSyqy","lawsSycx","isRelateAccess","lawsYear","lawsNotisyncNum","lawsBulletin","lawsLabel","lawsRemark"};
String[] bussstandStr = {"content","standSort","stand_code","standYear","stand_name","standEnName","nameshow","standstateshow","numbershow","textStatusBuss","textStatusBussName","NYLXCLASS","CLLX"};
String[] lawsStr = {"content","lawsEnName","lawsNo","issueCompany","lawsTextState","lawsSyqy","lawsSycx","isRelateAccess","lawsNotisyncNum","lawsBulletin","lawsLabel","lawsRemark"};
String[] bussstandStr = {"content","stand_code","standEnName","nameshow","standstateshow","numbershow","textStatusBuss","textStatusBussName","NYLXCLASS","CLLX"};
for (String field : fieldList) {
// 关键字查询属性字段
String keyWordField2 = field + "Name";
@@ -779,7 +813,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
listStrings.addAll(fieldNameList);
String[] fieldArr = listStrings.stream().toArray(String[]::new);
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),fieldArr
).minimumShouldMatch("100%");
).minimumShouldMatch("100%").boost(1L);
// boolQueryBuilder.should();
// for (String field : fieldList) {
// // 关键字查询属性字段
@@ -792,14 +826,14 @@ public class SearchCenterServiceImpl implements SearchCenterService {
listStringLaws.addAll(fieldNameList);
String[] fieldLawsArr = listStringLaws.stream().toArray(String[]::new);
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),fieldLawsArr
).minimumShouldMatch("100%");
).minimumShouldMatch("100%").boost(1L);
break;
case "bussstand":
List<String> listStringBussstand = Stream.of(bussstandStr).collect(Collectors.toList());
listStringBussstand.addAll(fieldNameList);
String[] fieldBussstandArr = listStringBussstand.stream().toArray(String[]::new);
multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),fieldBussstandArr
).minimumShouldMatch("100%");
).minimumShouldMatch("100%").boost(1L);
break;
default: break;
}
@@ -1221,7 +1255,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
hiBuilder.field(highlightDate);
hiBuilder.preTags("<span class='highlight-class'>");
hiBuilder.postTags("</span>");
updateIndex("fulltextserch",(searchInfoEO.getPage()-1)*searchInfoEO.getPageSize(),searchInfoEO.getPageSize());
updateIndex("fulltextserch");
searchRequestBuilder = client.prepareSearch("fulltextserch")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.highlighter(hiBuilder)
@@ -1516,7 +1550,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
hiBuilder.preTags("<span class='highlight-class'>");
hiBuilder.postTags("</span>");
updateIndex("fulltextserch",(searchInfoEO.getPage()-1)*searchInfoEO.getPageSize(),searchInfoEO.getPageSize());
updateIndex("fulltextserch");
searchRequestBuilder = client.prepareSearch("fulltextserch")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.highlighter(hiBuilder)
@@ -1581,14 +1615,13 @@ public class SearchCenterServiceImpl implements SearchCenterService {
}
//更新索引的max_result_window参数
private boolean updateIndex(String indices, int from,int size) {
int records = from * size + size;
if (records <= 10000) return true;
private boolean updateIndex(String indices) {
AcknowledgedResponse indexResponse = client.admin().indices()
.prepareUpdateSettings(indices)
.setSettings(Settings.builder()
.put("index.max_result_window", records)
.put("highlight.max_analyzed_offset", records)
.put("index.max_result_window", 100000000)
.put("highlight.max_analyzed_offset", 100000000)
.put("index.highlight.max_analyzed_offset", 100000000)
.build()
).get();
return indexResponse.isAcknowledged();