feat: There is no way the, 优化ES 优到什么时候
This commit is contained in:
+49
-16
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user