Browse Source

领域检索

xiaoqiao 7 months ago
parent
commit
c52c18e168

+ 1 - 1
src/main/java/com/bowintek/practice/controller/EsQueryController.java

@@ -82,7 +82,7 @@ public class EsQueryController {
         Map<String, Object> results = esQueryService.query(queryList,
                 limiters,
                 model.getPage(),
-                model.getLimit());
+                model.getLimit(),model.getOrderType(),model.getOrderBy());
 
         highlight(results);
 

+ 10 - 7
src/main/java/com/bowintek/practice/services/impl/EsQueryServiceImpl.java

@@ -127,7 +127,8 @@ public class EsQueryServiceImpl implements EsQueryService {
     }
 
     @Override
-    public Map<String, Object> query(List<EsQueryText> queryList, List<ComparisonResult> limiters, int page, int limit) {
+    public Map<String, Object> query(List<EsQueryText> queryList, List<ComparisonResult> limiters,
+                                     int page, int limit, String orderType, String orderBy) {
         //[1]需要返回的结果map
         Map<String, Object> result = new HashMap<>();
         result.put("total", 0);
@@ -184,12 +185,14 @@ public class EsQueryServiceImpl implements EsQueryService {
                 boolQuery.should(queryMustList);
             }
             Query queryMust = Query.of(q -> q.bool(boolQuery.build()));
-            //Query byName = MatchQuery.of(m -> m.field("well_common_name").query("宁12-412"))._toQuery();
-            //Query queryMust = Query.of(q -> q.term(TermQuery.of(m -> m.field("well_common_name.keyword").value("宁12-412"))));
-            SortOptions.Builder sb = new SortOptions.Builder();
-            sb.field(f -> f.field("create_date").order(SortOrder.Desc));
-            searchRequest.query(queryMust).sort(sb.build());
 
+            if (orderType != null && !StringUtils.IsNullEmpty(orderBy)) {
+                SortOptions.Builder sb = new SortOptions.Builder();
+                sb.field(f -> f.field(orderBy).order(orderType.equals("asc") ? SortOrder.Asc : SortOrder.Desc));
+                searchRequest.query(queryMust).sort(sb.build());
+            }else{
+                searchRequest.query(queryMust);
+            }
             //==>高亮设置
             searchRequest.highlight(h -> h.fields("*", f -> f.preTags("<font color='red'>")
                     .postTags("</font>")));
@@ -413,7 +416,7 @@ public class EsQueryServiceImpl implements EsQueryService {
             Map<String, Object> map = objectNode2Map(hit.index(), node);
             map.put("index", hit.index());
             map.put("highlight", hit.highlight());
-            map.put("innerHits",hit.innerHits());
+            map.put("innerHits", hit.innerHits());
             list.add(map);
 
             //输出结果日志

+ 2 - 1
src/main/java/com/bowintek/practice/services/service/EsQueryService.java

@@ -1,5 +1,6 @@
 package com.bowintek.practice.services.service;
 
+import co.elastic.clients.elasticsearch._types.SortOrder;
 import co.elastic.clients.elasticsearch.indices.AnalyzeResponse;
 import com.bowintek.practice.vo.Analyze.ComparisonResult;
 import com.bowintek.practice.vo.Analyze.EsQueryText;
@@ -8,5 +9,5 @@ import java.util.List;
 import java.util.Map;
 
 public interface EsQueryService {
-    Map<String, Object> query(List<EsQueryText> queryList, List<ComparisonResult> limiters, int page, int limit);
+    Map<String, Object> query(List<EsQueryText> queryList, List<ComparisonResult> limiters, int page, int limit, String orderType, String orderBy);
 }

+ 3 - 0
src/main/java/com/bowintek/practice/vo/Analyze/EsQueryModel.java

@@ -1,5 +1,6 @@
 package com.bowintek.practice.vo.Analyze;
 
+import co.elastic.clients.elasticsearch._types.SortOrder;
 import lombok.Data;
 
 import java.util.List;
@@ -11,4 +12,6 @@ public class EsQueryModel {
     private FormState formState;
     private int page;
     private int limit;
+    private String orderType;
+    private String orderBy;
 }

+ 3 - 0
vue/src/components/basic/es-result/list-view.vue

@@ -5,6 +5,9 @@
       <a-table :columns="columns" :data-source="data" :scroll="{ x:'1500', y: 300 }"
                :pagination="false" @resizeColumn="handleResizeColumn"
                bordered>
+        <template #bodyCell="{ column, record }">
+            <div v-html="record[column.key]"></div>
+        </template>
       </a-table>
     </div>
   </div>

+ 6 - 4
vue/src/views/esdomain/result.vue

@@ -40,14 +40,14 @@
       <div class="search-container">
         <div class="search-body">
           <div class="search-order">
-            <div @click="pageState.orderBy='default';pageState.orderType=''" :style="{ color: pageState.orderBy=='default'? '#1890FF':'' }">
+            <div @click="pageState.orderBy='';pageState.orderType='';loadData();" :style="{ color: pageState.orderBy==''? '#1890FF':'' }">
               综合排序
             </div>
             <div>创建时间
               <p class="search-order-icon">
-                <caret-up-outlined @click="pageState.orderBy='time';pageState.orderType='asc'"
+                <caret-up-outlined @click="pageState.orderBy='create_date';pageState.orderType='asc';loadData();"
                                    :style="{ color: pageState.orderType=='asc'? '#1890FF':'#cccccc' }"/>
-                <caret-down-outlined @click="pageState.orderBy='time';pageState.orderType='desc'"
+                <caret-down-outlined @click="pageState.orderBy='create_date';pageState.orderType='desc';loadData();"
                                      :style="{ color: pageState.orderType=='desc'? '#1890FF':'#cccccc' }"/>
               </p>
             </div>
@@ -171,7 +171,7 @@ export default defineComponent({
     const pageState = reactive({
       showMoreQuery: false,
       orderBy: '',
-      orderType: '',
+      orderType: 'asc',
       loading: false,
       showMoreKey: false
     });
@@ -214,6 +214,8 @@ export default defineComponent({
     function loadData() {
       queryObject.value.page = pageParams.value.current - 1;
       queryObject.value.limit = pageParams.value.pageSize;
+      queryObject.value.orderType =pageState.orderType;
+      queryObject.value.orderBy =pageState.orderBy;
 
       pageState.loading = true;
       postData('esquery/Query', queryObject.value).then(result => {