Browse Source

领域检索切换为RestHighLevelClient

xiaoqiao 6 tháng trước cách đây
mục cha
commit
1f72099d92

+ 10 - 0
.idea/jarRepositories.xml

@@ -1,6 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="HuaweiCloudSDK" />
+      <option name="name" value="HuaweiCloudSDK" />
+      <option name="url" value="https://mirrors.huaweicloud.com/repository/maven/huaweicloudsdk/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://mirrors.huaweicloud.com/repository/maven/" />
+    </remote-repository>
     <remote-repository>
       <option name="id" value="central" />
       <option name="name" value="Central Repository" />

+ 9 - 0
conf/es.zhouhao.jaas.conf

@@ -0,0 +1,9 @@
+EsClient {
+com.sun.security.auth.module.Krb5LoginModule required
+useKeyTab=true
+keyTab="/usr/local/out/krb5/user.keytab"
+principal="esuser"
+useTicketCache=false
+storeKey=true
+debug=true;
+};

+ 9 - 0
conf/es.zq.jaas.conf

@@ -0,0 +1,9 @@
+EsClient {
+com.sun.security.auth.module.Krb5LoginModule required
+useKeyTab=true
+keyTab="D:\\我的文件\\博颖项目\\华北油田AI检索\\smartsearch\\conf\\user.keytab"
+principal="hyzc_default"
+useTicketCache=false
+storeKey=true
+debug=true;
+};

+ 14 - 0
conf/esParams.properties

@@ -0,0 +1,14 @@
+#esServerHost
+esServerHost=office.bowintek.com:9200
+connectTimeout=5000
+socketTimeout=60000
+connectionRequestTimeout=100000
+maxConnPerRoute=100
+maxConnTotal=1000
+isSecureMode=false
+sslEnabled=true
+#principal填写用户名
+principal=hyzc_default
+snifferEnable=true
+# jaas.conf文件路径,不填将自动生成
+customJaasPath=

+ 48 - 0
conf/krb5.conf

@@ -0,0 +1,48 @@
+[kdcdefaults]
+kdc_ports = 10.73.176.5:21732
+kdc_tcp_ports = ""
+
+[libdefaults]
+default_realm = HADOOP.COM
+kdc_timeout = 2500
+clockskew = 300
+use_dns_lookup = 0
+udp_preference_limit = 1465
+max_retries = 5
+dns_lookup_kdc = false
+dns_lookup_realm = false
+renewable = false
+forwardable = false
+renew_lifetime = 0m
+max_renewable_life = 30m
+allow_extend_version = false
+default_ccache_name = FILE:/tmp//krb5cc_%{uid}
+
+[realms]
+HADOOP.COM = {
+kdc = 10.73.176.4:21732
+kdc = 10.73.176.5:21732
+admin_server = 10.73.176.4:21730
+admin_server = 10.73.176.5:21730
+kpasswd_server = 10.73.176.4:21731
+kpasswd_server = 10.73.176.5:21731
+kpasswd_port = 21731
+kadmind_port = 21730
+kadmind_listen = 10.73.176.5:21730
+kpasswd_listen = 10.73.176.5:21731
+renewable = false
+forwardable = false
+renew_lifetime = 0m
+max_renewable_life = 30m
+acl_file = /opt/huawei/Bigdata/FusionInsight_BASE_8.1.3/install/FusionInsight-kerberos-1.18/kerberos/var/krb5kdc/kadm5.acl
+dict_file = /opt/huawei/Bigdata/common/runtime/security/weakPasswdDic/weakPasswdForKdc.ini
+key_stash_file = /opt/huawei/Bigdata/FusionInsight_BASE_8.1.3/install/FusionInsight-kerberos-1.18/kerberos/var/krb5kdc/.k5.HADOOP.COM
+}
+
+[domain_realm]
+.hadoop.com = HADOOP.COM
+
+[logging]
+kdc = SYSLOG:INFO:DAEMON
+admin_server = SYSLOG:INFO:DAEMON
+default = SYSLOG:NOTICE:DAEMON

BIN
conf/user.keytab


+ 173 - 3
pom.xml

@@ -15,8 +15,178 @@
     <description>vue3 + antd 3 + mssql</description>
     <properties>
         <java.version>17</java.version>
+        <elasticsearch.version>7.10.2-h0.cbu.mrs.320.r33</elasticsearch.version>
+        <opendistro.version>1.13.0.0-h0.cbu.mrs.320.r33</opendistro.version>
+        <lucene.version>8.7.0</lucene.version>
     </properties>
     <dependencies>
+        <dependency>
+            <groupId>org.elasticsearch.client</groupId>
+            <artifactId>elasticsearch-rest-client</artifactId>
+            <version>${elasticsearch.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.elasticsearch.client</groupId>
+            <artifactId>elasticsearch-rest-high-level-client</artifactId>
+            <version>${elasticsearch.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.elasticsearch.plugin</groupId>
+                    <artifactId>parent-join-client</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.elasticsearch.plugin</groupId>
+                    <artifactId>aggs-matrix-stats-client</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.elasticsearch</groupId>
+            <artifactId>elasticsearch</artifactId>
+            <version>${elasticsearch.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-analyzers-common</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-memory</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-backward-codecs</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-grouping</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-misc</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-queryparser</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-sandbox</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-spatial</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-spatial-extras</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-spatial3d</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.elasticsearch</groupId>
+                    <artifactId>securesm</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.elasticsearch</groupId>
+                    <artifactId>elasticsearch-cli</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.elasticsearch</groupId>
+                    <artifactId>jna</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.yaml</groupId>
+                    <artifactId>snakeyaml</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.fasterxml.jackson.dataformat</groupId>
+                    <artifactId>jackson-dataformat-yaml</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.fasterxml.jackson.dataformat</groupId>
+                    <artifactId>jackson-dataformat-smile</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.fasterxml.jackson.dataformat</groupId>
+                    <artifactId>jackson-dataformat-cbor</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.tdunning</groupId>
+                    <artifactId>t-digest</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.hdrhistogram</groupId>
+                    <artifactId>HdrHistogram</artifactId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>log4j-api</artifactId>
+                    <groupId>org.apache.logging.log4j</groupId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-highlighter</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-join</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-queries</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-suggest</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.amazon.opendistroforelasticsearch.client</groupId>
+            <artifactId>opendistro-sql-jdbc</artifactId>
+            <version>${opendistro.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.fasterxml.jackson.dataformat</groupId>
+                    <artifactId>jackson-dataformat-cbor</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.fasterxml.jackson.core</groupId>
+                    <artifactId>jackson-databind</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-core</artifactId>
+            <version>${lucene.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-highlighter</artifactId>
+            <version>${lucene.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-join</artifactId>
+            <version>${lucene.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-queries</artifactId>
+            <version>${lucene.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-suggest</artifactId>
+            <version>${lucene.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
@@ -166,11 +336,11 @@
             <artifactId>aspectjrt</artifactId>
             <version>${aspectj.version}</version>
         </dependency>
-        <dependency>
+     <!--   <dependency>
             <groupId>co.elastic.clients</groupId>
             <artifactId>elasticsearch-java</artifactId>
-            <version>8.11.1</version>
-        </dependency>
+            <version>7.17.0</version>
+        </dependency>-->
         <!--ik-analyzer分词器-->
         <dependency>
             <groupId>com.janeluo</groupId>

+ 4 - 10
src/main/java/com/bowintek/practice/config/ElasticsearchConfig.java

@@ -1,12 +1,5 @@
 package com.bowintek.practice.config;
 
-import co.elastic.clients.elasticsearch.ElasticsearchClient;
-import co.elastic.clients.elasticsearch.indices.GetIndexResponse;
-import co.elastic.clients.elasticsearch.indices.IndexState;
-import co.elastic.clients.json.jackson.JacksonJsonpMapper;
-import co.elastic.clients.transport.ElasticsearchTransport;
-import co.elastic.clients.transport.rest_client.RestClientTransport;
-import co.elastic.clients.util.ContentType;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.*;
 import org.apache.http.auth.AuthSchemeProvider;
@@ -71,6 +64,7 @@ public class ElasticsearchConfig {
     }
     @Bean
     public ElasticsearchClient esClient() {
+       return null;
         //System.setProperty("java.security.krb5.conf",config.getKrb5());
         //System.setProperty("java.security.auth.login.config", config.getJaas());
         //System.setProperty("java.security.auth.login.defaultConfigurationName", "EsClient");
@@ -84,8 +78,8 @@ public class ElasticsearchConfig {
                         .addInterceptorLast((HttpResponseInterceptor) (response, context)-> response.addHeader("X-Elastic-Product", "Elasticsearch"))
                 ).build();*/
 
-        this.setSecConfig();
-        RestClient restClient = RestClient.builder(new HttpHost(config.getHosts(), config.getPort(), config.getSchema()))
+      /*  this.setSecConfig();
+         restClient = RestClient.builder(new HttpHost(config.getHosts(), config.getPort(), config.getSchema()))
                 .setHttpClientConfigCallback(httpClientBuilder -> {
                     httpClientBuilder.setSSLContext(SSL_CONTEXT);
                     //httpClientBuilder.setDefaultAuthSchemeRegistry(AUTH_SCHEME_REGISTRY);
@@ -131,7 +125,7 @@ public class ElasticsearchConfig {
         } catch (Exception ex) {
             log.info("查看指定索引:" + ex.getMessage());
         }
-        return client;
+        return client;*/
     }
 
     private void setSecConfig() {

+ 1 - 0
src/main/java/com/bowintek/practice/config/EsConfig.java

@@ -24,4 +24,5 @@ public class EsConfig {
     private int maxConnectNum;
     private int maxConnectPerRoute;
     private String preStr;
+    private int isDev;
 }

+ 50 - 0
src/main/java/com/bowintek/practice/config/HwElasticsearchConfig.java

@@ -0,0 +1,50 @@
+package com.bowintek.practice.config;
+
+import com.bowintek.practice.util.HwRestClientUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpHost;
+import org.elasticsearch.action.get.GetRequest;
+import org.elasticsearch.action.get.GetResponse;
+import org.elasticsearch.action.index.IndexRequest;
+import org.elasticsearch.action.index.IndexResponse;
+import org.elasticsearch.client.RequestOptions;
+import org.elasticsearch.client.RestClient;
+import org.elasticsearch.client.RestClientBuilder;
+import org.elasticsearch.client.RestHighLevelClient;
+import org.elasticsearch.client.core.MainResponse;
+import org.elasticsearch.common.Strings;
+import org.elasticsearch.common.xcontent.XContentType;
+import org.elasticsearch.hwclient.HwRestClient;
+import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.annotation.Resource;
+
+@Slf4j
+@Configuration
+public class HwElasticsearchConfig {
+    @Resource
+    EsConfig config;
+
+    @Bean
+    public RestHighLevelClient highLevelClient() {
+        RestHighLevelClient highLevelClient = null;
+
+        try {
+            if (config.getIsDev() == 1) {
+                highLevelClient = new RestHighLevelClient(
+                        RestClient.builder(
+                                new HttpHost(config.getHosts(), config.getPort(), config.getSchema())));
+            } else {
+                HwRestClient hwRestClient = HwRestClientUtils.getHwRestClient(null);
+                RestClientBuilder rsBuilder = hwRestClient.getRestClientBuilder();
+                highLevelClient = new RestHighLevelClient(rsBuilder);
+            }
+        } catch (Exception e) {
+            log.info(e.getMessage());
+            e.printStackTrace();
+        }
+        return highLevelClient;
+    }
+}

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

@@ -1,33 +1,19 @@
 package com.bowintek.practice.controller;
 
-import co.elastic.clients.elasticsearch.core.search.Hit;
-import co.elastic.clients.elasticsearch.core.search.InnerHitsResult;
-import co.elastic.clients.json.JsonData;
-import com.bowintek.practice.AppConfig;
 import com.bowintek.practice.filter.exception.BaseResponse;
 import com.bowintek.practice.filter.exception.RespGenerstor;
-import com.bowintek.practice.mapper.SrSaerchtempMapper;
-import com.bowintek.practice.mapper.SrTempDataMapper;
-import com.bowintek.practice.model.SrSaerchtemp;
-import com.bowintek.practice.model.SrTempData;
 import com.bowintek.practice.services.service.*;
 import com.bowintek.practice.util.StringUtils;
 import com.bowintek.practice.vo.Analyze.ComparisonResult;
 import com.bowintek.practice.vo.Analyze.EsQueryModel;
 import com.bowintek.practice.vo.Analyze.EsQueryText;
 import com.bowintek.practice.vo.Analyze.FormState;
-import com.bowintek.practice.vo.SaerchtempVo;
-import com.bowintek.practice.vo.system.RoleModel;
-import com.bowintek.practice.vo.temp.GenSqlStringResult;
-import com.bowintek.practice.vo.temp.TempObjectModel;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.github.pagehelper.PageInfo;
+import org.elasticsearch.search.SearchHit;
+import org.elasticsearch.search.SearchHits;
+import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.*;
-import java.net.URLEncoder;
 import java.util.*;
 
 @RestController
@@ -92,6 +78,7 @@ public class EsQueryController {
                 model.getPage(),
                 model.getLimit(),model.getOrderType(),model.getOrderBy());
 
+        //高亮解析
         highlight(results);
 
         //保存查询字符串,查询历史统计
@@ -109,11 +96,11 @@ public class EsQueryController {
         rows.forEach(it -> {
             it.put("key", UUID.randomUUID().toString());
             if (it.get("highlight") != null) {
-                Map<String, ArrayList<String>> highlight = (Map<String, ArrayList<String>>) it.get("highlight");
+                Map<String,HighlightField> highlight = (Map<String,HighlightField>) it.get("highlight");
                 for (String key : highlight.keySet()) {
                     //主索引
                     if (it.keySet().contains(key)) {
-                        it.put(key, highlight.get(key).get(0));
+                        it.put(key, highlight.get(key).getFragments()[0].string());
                     } else {
                         nestedHighlight(it);
                     }
@@ -127,17 +114,17 @@ public class EsQueryController {
     private void nestedHighlight(Map<String, Object> it) {
         Map<String, Object> innerHits = (Map<String, Object>) it.get("innerHits");
         for (String nestedKey : innerHits.keySet()) {
-            InnerHitsResult nested = (InnerHitsResult) innerHits.get(nestedKey);
-            List<Hit<JsonData>> nestedHits = nested.hits().hits();
-            for (Hit<JsonData> hit : nestedHits) {
-                int offset = hit.nested().offset();
-                Map<String, List<String>> nestedHighlight = hit.highlight();
+            SearchHits nested = (SearchHits) innerHits.get(nestedKey);
+            SearchHit[] nestedHits = nested.getHits();
+            for (SearchHit hit : nestedHits) {
+                int offset = hit.getNestedIdentity().getOffset();
+                Map<String, HighlightField> nestedHighlight = hit.getHighlightFields();
                 for (String nKey : nestedHighlight.keySet()) {
                     ArrayList<Map<String, Object>> nestedData = (ArrayList<Map<String, Object>>) it.get(nestedKey);
                     Map<String, Object> row = (Map<String, Object>) nestedData.get(offset);
                     String fieldName = nKey.replace(nestedKey + ".", "");
                     if (row.keySet().contains(fieldName)) {
-                        row.put(fieldName, nestedHighlight.get(nKey).get(0));
+                        row.put(fieldName, nestedHighlight.get(nKey).getFragments()[0].string());
                     }
                 }
             }

+ 0 - 3
src/main/java/com/bowintek/practice/controller/SubjectController.java

@@ -1,6 +1,5 @@
 package com.bowintek.practice.controller;
 
-import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import com.alibaba.fastjson.JSONObject;
 import com.bowintek.practice.filter.exception.BaseErrorEnum;
 import com.bowintek.practice.filter.exception.BaseResponse;
@@ -43,8 +42,6 @@ public class SubjectController {
     @Autowired
     private StringUtils stringUtils;
 
-    @Autowired
-    private ElasticsearchClient esClient;
 
     @ResponseBody
     @GetMapping("/getList")

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

@@ -1,9 +1,6 @@
 package com.bowintek.practice.controller;
 
-import co.elastic.clients.elasticsearch.ElasticsearchClient;
-import co.elastic.clients.elasticsearch.indices.AnalyzeRequest;
-import co.elastic.clients.elasticsearch.indices.AnalyzeResponse;
-import co.elastic.clients.elasticsearch.indices.analyze.AnalyzeToken;
+
 import com.bowintek.practice.AppConfig;
 import com.bowintek.practice.filter.exception.BaseErrorEnum;
 import com.bowintek.practice.filter.exception.BaseException;

+ 15 - 8
src/main/java/com/bowintek/practice/services/impl/AnalyzeServiceImpl.java

@@ -1,8 +1,6 @@
 package com.bowintek.practice.services.impl;
 
-import co.elastic.clients.elasticsearch.ElasticsearchClient;
-import co.elastic.clients.elasticsearch.indices.AnalyzeRequest;
-import co.elastic.clients.elasticsearch.indices.AnalyzeResponse;
+
 import com.alibaba.fastjson.JSON;
 import com.bowintek.practice.mapper.cquery.EsQueryKeywordCQuery;
 import com.bowintek.practice.model.EsQueryKeyword;
@@ -14,9 +12,14 @@ import com.bowintek.practice.vo.Analyze.AnalyzeModel;
 import com.bowintek.practice.vo.Analyze.ComparisonResult;
 import com.bowintek.practice.vo.EsIndexVo;
 import com.bowintek.practice.vo.EsIndexfieldVo;
+import org.elasticsearch.client.RequestOptions;
+import org.elasticsearch.client.RestHighLevelClient;
+import org.elasticsearch.client.indices.AnalyzeRequest;
+import org.elasticsearch.client.indices.AnalyzeResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.io.IOException;
 import java.io.StringReader;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -32,7 +35,7 @@ import org.wltea.analyzer.dic.Hit;
 @Component
 public class AnalyzeServiceImpl implements AnalyzeService {
     @Autowired
-    private ElasticsearchClient esClient;
+    private RestHighLevelClient highLevelClient;
     @Autowired
     private EsQueryKeywordCQuery esQueryKeywordCQuery;
     @Autowired
@@ -154,15 +157,19 @@ public class AnalyzeServiceImpl implements AnalyzeService {
     @Override
     public AnalyzeResponse analyze(String text) {
         try {
-            AnalyzeRequest.Builder builder = new AnalyzeRequest.Builder();
-            builder.analyzer("ik_smart");
-            builder.text(text);
-            AnalyzeResponse response = esClient.indices().analyze(builder.build());
+            AnalyzeRequest request =AnalyzeRequest.withGlobalAnalyzer("ik_smart",text) ;
+            AnalyzeResponse response = highLevelClient.indices().analyze(request, RequestOptions.DEFAULT);
             System.out.println(response.toString());
             return response;
         } catch (Exception ex) {
             ex.printStackTrace();
             return null;
+        }finally {
+            try {
+                highLevelClient.close();
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
         }
     }
 

+ 135 - 127
src/main/java/com/bowintek/practice/services/impl/EsQueryServiceImpl.java

@@ -1,25 +1,6 @@
 package com.bowintek.practice.services.impl;
 
-import co.elastic.clients.elasticsearch.ElasticsearchClient;
-import co.elastic.clients.elasticsearch._types.FieldValue;
-import co.elastic.clients.elasticsearch._types.SortOptions;
-import co.elastic.clients.elasticsearch._types.SortOrder;
-import co.elastic.clients.elasticsearch._types.aggregations.Aggregate;
-import co.elastic.clients.elasticsearch._types.aggregations.Buckets;
-import co.elastic.clients.elasticsearch._types.aggregations.StringTermsAggregate;
-import co.elastic.clients.elasticsearch._types.aggregations.StringTermsBucket;
-import co.elastic.clients.elasticsearch._types.mapping.Property;
-import co.elastic.clients.elasticsearch._types.mapping.TextProperty;
-import co.elastic.clients.elasticsearch._types.query_dsl.*;
-import co.elastic.clients.elasticsearch.cat.IndicesResponse;
-import co.elastic.clients.elasticsearch.core.SearchRequest;
-import co.elastic.clients.elasticsearch.core.SearchResponse;
-import co.elastic.clients.elasticsearch.core.search.Hit;
-import co.elastic.clients.elasticsearch.indices.GetIndexResponse;
-import co.elastic.clients.elasticsearch.indices.IndexState;
-import co.elastic.clients.elasticsearch.indices.PutMappingRequest;
-import co.elastic.clients.elasticsearch.indices.PutMappingResponse;
-import co.elastic.clients.json.JsonData;
+
 import com.bowintek.practice.mapper.cquery.EsIndexCquery;
 import com.bowintek.practice.services.service.AnalyzeService;
 import com.bowintek.practice.services.service.EsQueryService;
@@ -36,6 +17,20 @@ import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.lucene.search.join.ScoreMode;
+import org.elasticsearch.action.search.SearchRequest;
+import org.elasticsearch.action.search.SearchRequestBuilder;
+import org.elasticsearch.action.search.SearchResponse;
+import org.elasticsearch.client.RequestOptions;
+import org.elasticsearch.client.RestHighLevelClient;
+import org.elasticsearch.index.query.*;
+import org.elasticsearch.search.SearchHit;
+import org.elasticsearch.search.aggregations.AggregationBuilders;
+import org.elasticsearch.search.aggregations.bucket.terms.Terms;
+import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
+import org.elasticsearch.search.builder.SearchSourceBuilder;
+import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
+import org.elasticsearch.search.sort.SortOrder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.query.SortQuery;
 import org.springframework.stereotype.Component;
@@ -49,7 +44,9 @@ import java.util.stream.Collectors;
 @Slf4j
 public class EsQueryServiceImpl implements EsQueryService {
     @Autowired
-    private ElasticsearchClient esClient;
+    RestHighLevelClient highLevelClient;
+    @Autowired
+    private RestHighLevelClient esClient;
     @Autowired
     private AnalyzeService analyzeService;
     @Autowired
@@ -90,8 +87,8 @@ public class EsQueryServiceImpl implements EsQueryService {
         return pathCache;
     }
 
-    public List<Query> getComparisonQueryList(EsQueryText queryText) {
-        List<Query> queryList = new ArrayList<>();
+    public List<QueryBuilder> getComparisonQueryList(EsQueryText queryText) {
+        List<QueryBuilder> queryList = new ArrayList<>();
         //分析查询字符串,有的字符串需要变成条件查询
         List<ComparisonResult> cmpList = analyzeService.analyzeJavas(queryText.getKeyString());
         //二级查询的路径信息
@@ -127,23 +124,11 @@ public class EsQueryServiceImpl implements EsQueryService {
         }
         return queryList;
     }
-    void getIndex()
-    {
-        try {
-            // 查看指定索引
-            GetIndexResponse getIndexResponse = esClient.indices().get(s -> s.index("test4"));
-            Map<String, IndexState> result = getIndexResponse.result();
-            result.forEach((k, v) -> log.info("key = {},value = {}", k, v));
-        }catch (Exception ex){
-            log.info(ex.getMessage());
-            ex.printStackTrace();
-        }
-    }
+
 
     @Override
     public Map<String, Object> query(List<EsQueryText> queryList, List<ComparisonResult> limiters,
                                      int page, int limit, String orderType, String orderBy) {
-        getIndex();
 
         //[1]需要返回的结果map
         Map<String, Object> result = new HashMap<>();
@@ -153,12 +138,12 @@ public class EsQueryServiceImpl implements EsQueryService {
             //二级查询的路径信息
             List<String> pathList = getPathCache();
 
-            List<Query> queryMustList = new ArrayList<>();
-            BoolQuery.Builder boolQuery = new BoolQuery.Builder();
+            List<QueryBuilder> queryMustList = new ArrayList<>();
+            BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
 
             //[2]分析查询字符串,有的字符串需要变成条件查询
             for (EsQueryText queryText : queryList) {
-                List<Query> shouldQuerys = getComparisonQueryList(queryText);
+                List<QueryBuilder> shouldQuerys = getComparisonQueryList(queryText);
                 if (shouldQuerys.size() > 0) {
                     queryMustList.addAll(shouldQuerys);
                 }
@@ -170,162 +155,183 @@ public class EsQueryServiceImpl implements EsQueryService {
 
                 //第一级,对比搜索
                 if (Constant.AND.equals(cmp.getRelation())) {
-                    boolQuery.must(getRangeQueryByComparison(cmp));
+                    getRangeQueryByComparison(cmp).forEach(x -> boolQuery.must(x));
                 } else if (Constant.OR.equals(cmp.getRelation())) {
-                    boolQuery.should(getRangeQueryByComparison(cmp));
+                    getRangeQueryByComparison(cmp).forEach(x -> boolQuery.should(x));
                 } else if (Constant.NOT.equals(cmp.getRelation())) {
-                    boolQuery.mustNot(getRangeQueryByComparison(cmp));
+                    getRangeQueryByComparison(cmp).forEach(x -> boolQuery.mustNot(x));
                 } else {
-                    boolQuery.must(getRangeQueryByComparison(cmp));
+                    getRangeQueryByComparison(cmp).forEach(x -> boolQuery.must(x));
                 }
             }
 
             //[4]建立查询参数分析
-            SearchRequest.Builder searchRequest = new SearchRequest.Builder();
             //==>要查询的索引列表,从数据库配置表中获取
-            searchRequest.index(getIndexCache());
+            SearchRequest searchRequest=new SearchRequest(getIndexCache().toArray(new String[0])); //新建请求
+            SearchSourceBuilder searchBuilder=new SearchSourceBuilder();
+
+
             //==>数据分页显示
-            searchRequest.size(limit);
-            searchRequest.from(page * limit);
+            searchBuilder.size(limit);
+            searchBuilder.from(page * limit);
             //==>设置查询条件
 
             if (queryMustList.size() > 0) {
-                boolQuery.should(queryMustList);
+                queryMustList.forEach(x->boolQuery.should(x));
             }
-            Query queryMust = Query.of(q -> q.bool(boolQuery.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);
+                searchBuilder.query(boolQuery).sort(orderBy,orderType.equals("asc") ? SortOrder.ASC : SortOrder.DESC);
+            } else {
+                searchBuilder.query(boolQuery);
             }
             //==>高亮设置
-            searchRequest.highlight(h -> h.fields("*", f -> f.preTags("<font color='red'>")
-                    .postTags("</font>")));
+            HighlightBuilder highlightBuilder = new HighlightBuilder()
+                    .preTags("<font color='red'>")
+                    .postTags("</font>")
+                    .field("*");
+            searchBuilder.highlighter(highlightBuilder);
 
             //查询后分组
-            searchRequest.aggregations("group_well", a -> a.terms(t -> t.field("well_id")));
+            TermsAggregationBuilder aggregation = AggregationBuilders
+                    .terms("group_well")
+                    .field("well_id");
+            searchBuilder.aggregation(aggregation);
 
             //[5]Es发起查询
-            SearchRequest request = searchRequest.build();
+            //SearchRequest request = searchRequest.build();
+            SearchRequest request =searchRequest.source(searchBuilder);
+
+            log.info("dsl:" + searchRequest.source().toString());
+            SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
 
-            log.info("dsl:" + request.toString());
-            SearchResponse<ObjectNode> response = esClient.search(request, ObjectNode.class);
             log.info("response:" + response.toString());
 
             //[6]转换结果,可以对不同的index做出参数输出
             List<Map<String, Object>> rows = searchResponse2List(response);
             result.put("rows", rows);
-            result.put("total", response.hits().total().value());
+            result.put("total", response.getHits().getTotalHits().value);
             result.put("agg", aggResponse2List(response));
 
-            //请求参数输出,方便调试
-            String[] jsonStrings = request.toString().split("typed_keys=true");
-            result.put("SearchUrl", jsonStrings[0]);
-            result.put("SearchRequest", stringToNodeJson(jsonStrings[1]));
-            System.out.println(response.hits().total() + " " + request.toString());
         } catch (Exception ex) {
             log.info(ex.getMessage());
             result.put("Message", ex.getMessage());
             result.put("StackTrace", ex.getStackTrace());
+        }finally {
+            /*try {
+                //esClient.close();
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }*/
         }
         return result;
     }
 
-    public Query getMultiMatchQuery(String text) {
+    public QueryBuilder getMultiMatchQuery(String text) {
         //不指定,查询所有的一级字段
-        return MultiMatchQuery.of(q -> q.query(text)
-                .operator(Operator.Or))._toQuery();
+        return QueryBuilders.multiMatchQuery(text)
+                .operator(org.elasticsearch.index.query.Operator.OR);
     }
 
-    public Query getMultiMatchQuery(List<String> fields, String text) {
+    public QueryBuilder getMultiMatchQuery(List<String> fields, String text) {
         //限定查询字段
-        return MultiMatchQuery.of(q -> q.fields(fields)
-                .query(text)
-                .operator(Operator.Or))._toQuery();
+        return QueryBuilders.multiMatchQuery(text, fields.toArray(new String[0]))
+                .operator(org.elasticsearch.index.query.Operator.OR);
     }
 
-    public Query getMultiMatchQuery(String[] fields, String text) {
+    public QueryBuilder getMultiMatchQuery(String[] fields, String text) {
         //限定查询字段
         return getMultiMatchQuery(Arrays.asList(fields), text);
     }
 
-    public Query getNestedMultiMatchQuery(String path, String text) {
+    public QueryBuilder getNestedMultiMatchQuery(String path, String text) {
         //不指定,查询所有的二级字段
-        return NestedQuery.of(q -> q.path(path)
-                .query(getMultiMatchQuery(text)).innerHits(i -> i.highlight(hl -> hl
-                        .fields("*", ff -> ff
-                                .preTags("<font color='red'>")
-                                .postTags("</font>")
-                        )
-                ))
-                .ignoreUnmapped(true))._toQuery();
+        // 创建 nested 查询
+        NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
+                path,
+                getMultiMatchQuery(text),
+                ScoreMode.None);
+
+        // 设置 inner_hits
+        InnerHitBuilder innerHitBuilder = new InnerHitBuilder();
+
+        // 设置 highlight
+        HighlightBuilder highlightBuilder = new HighlightBuilder()
+                .preTags("<font color='red'>")
+                .postTags("</font>").field("*"); // 高亮所有字段
+
+        innerHitBuilder.setHighlightBuilder(highlightBuilder);
+
+        nestedQuery.innerHit(innerHitBuilder);
+
+        return nestedQuery;
     }
 
-    public Query getNestedMultiMatchQuery(String path, List<String> fields, String text) {
+    public QueryBuilder getNestedMultiMatchQuery(String path, List<String> fields, String text) {
         //限定查询字段
-        return NestedQuery.of(q -> q.path(path)
-                .query(getMultiMatchQuery(fields, text))
-                .ignoreUnmapped(true))._toQuery();
+        return QueryBuilders.nestedQuery(
+                path,
+                getMultiMatchQuery(fields, text),
+                ScoreMode.None);
     }
 
-    public Query getNestedMultiMatchQuery(String path, String[] fields, String text) {
+    public QueryBuilder getNestedMultiMatchQuery(String path, String[] fields, String text) {
         //限定查询字段
-        return NestedQuery.of(q -> q.path(path)
-                .query(getMultiMatchQuery(fields, text))
-                .ignoreUnmapped(true))._toQuery();
+        return QueryBuilders.nestedQuery(
+                path,
+                getMultiMatchQuery(fields, text),
+                ScoreMode.None);
     }
 
-    public List<Query> getRangeQueryByComparison(ComparisonResult cmp) {
-        List<Query> queryList = new ArrayList<>();
+    public List<QueryBuilder> getRangeQueryByComparison(ComparisonResult cmp) {
+        List<QueryBuilder> queryList = new ArrayList<>();
         String fieldString = cmp.getFields();
         //对比类型查询
-        Query query = getComparisonQuery(fieldString, cmp.getOpreation(), cmp.getValue());
+        QueryBuilder query = getComparisonQuery(fieldString, cmp.getOpreation(), cmp.getValue());
         if (query != null) queryList.add(query);
 
         return queryList;
     }
 
-    public List<Query> getNestedRangeQueryByComparison(ComparisonResult cmp, String path) {
-        List<Query> queryList = new ArrayList<>();
+    public List<QueryBuilder> getNestedRangeQueryByComparison(ComparisonResult cmp, String path) {
+        List<QueryBuilder> queryList = new ArrayList<>();
         String fieldString = cmp.getFields();
         //对比类型查询
-        Query query = getComparisonQuery(path + "." + fieldString, cmp.getOpreation(), cmp.getValue());
+        QueryBuilder query = getComparisonQuery(path + "." + fieldString, cmp.getOpreation(), cmp.getValue());
         if (query != null) {
-            Query nested = NestedQuery.of(q -> q.path(path).query(query)
-                    .ignoreUnmapped(true))._toQuery();
+            QueryBuilder nested = QueryBuilders.nestedQuery(
+                    path,
+                    query,
+                    ScoreMode.None);
             queryList.add(nested);
         }
 
         return queryList;
     }
 
-    public Query getComparisonQuery(String fieldString, String opreation, String value) {
+    public QueryBuilder getComparisonQuery(String fieldString, String opreation, String value) {
         //对比类型查询
-        Query query = null;
+        QueryBuilder query = null;
         if (opreation.equals("大于"))
-            query = RangeQuery.of(q -> q.field(fieldString).gt(JsonData.of(value)))._toQuery();
+            query = QueryBuilders.rangeQuery(fieldString).gt(value);
         else if (opreation.equals("大于等于"))
-            query = RangeQuery.of(q -> q.field(fieldString).gte(JsonData.of(value)))._toQuery();
+            query = QueryBuilders.rangeQuery(fieldString).gte(value);
         else if (opreation.equals("小于"))
-            query = RangeQuery.of(q -> q.field(fieldString).lt(JsonData.of(value)))._toQuery();
+            query = QueryBuilders.rangeQuery(fieldString).lt(value);
         else if (opreation.equals("小于等于"))
-            query = RangeQuery.of(q -> q.field(fieldString).lte(JsonData.of(value)))._toQuery();
+            query = QueryBuilders.rangeQuery(fieldString).lte(value);
         else if (opreation.equals("等于"))
-            query = MatchQuery.of(q -> q.field(fieldString).query(value).minimumShouldMatch("80%"))._toQuery();
+            query = QueryBuilders.matchQuery(fieldString, value)
+                    .minimumShouldMatch("80%");
         else if (opreation.equals("包括IN")) {
-            String[] ins = value.split(",");
-            List<FieldValue> fls = new ArrayList<>();
-            for (String inString : ins) fls.add(FieldValue.of(inString));
-            query = TermsQuery.of(q -> q.field(fieldString).terms(s -> s.value(fls)))._toQuery();
+            String[] fls = value.split(",");
+            query=QueryBuilders.termsQuery(fieldString, fls);
         }
         return query;
     }
 
-    public Map<String, Object> queryTest(String text, int page, int limit) {
+   /* public Map<String, Object> queryTest(String text, int page, int limit) {
         Map<String, Object> result = new HashMap<>();
         result.put("total", 0);
 
@@ -388,7 +394,7 @@ public class EsQueryServiceImpl implements EsQueryService {
         PutMappingResponse putMappingResponse = esClient.indices().putMapping(putMappingRequest);
         boolean acknowledged = putMappingResponse.acknowledged();
         System.out.println("update mappings ack: " + acknowledged);
-    }
+    }*/
 
     public JsonNode stringToNodeJson(String jsonString) throws JsonProcessingException {
         ObjectMapper objectMapper = new ObjectMapper();
@@ -396,37 +402,39 @@ public class EsQueryServiceImpl implements EsQueryService {
         return rootNode;
     }
 
-    public List<Map<String, Object>> aggResponse2List(SearchResponse<ObjectNode> searchResponse) {
-        List<StringTermsBucket> buckets = searchResponse.aggregations().get("group_well").sterms().buckets().array();
+    public List<Map<String, Object>> aggResponse2List(SearchResponse searchResponse) {
+        // 获取聚合结果
+        Terms groupWell = searchResponse.getAggregations().get("group_well");
         List<Map<String, Object>> aggs = new ArrayList<>();
-        for (StringTermsBucket bucket : buckets) {
+        // 处理聚合结果
+        for (Terms.Bucket bucket : groupWell.getBuckets()) {
             Map<String, Object> map = new HashMap<>();
-            map.put("key", bucket.key().stringValue());
-            map.put("doc_count", bucket.docCount());
+            map.put("key", bucket.getKeyAsString());
+            map.put("doc_count", bucket.getDocCount());
             aggs.add(map);
         }
         return aggs;
     }
 
-    public List<Map<String, Object>> searchResponse2List(SearchResponse<ObjectNode> searchResponse) {
+    public List<Map<String, Object>> searchResponse2List(SearchResponse searchResponse) {
 
         if (searchResponse == null) {
             return new ArrayList<>(0);
         }
-        if (searchResponse.hits() == null) {
+        if (searchResponse.getHits() == null) {
             return new ArrayList<>(0);
         }
         //if (CommonUtils.isCollectionEmpty(searchResponse.hits().hits())) {return new ArrayList<>(0);}
 
-        List<Hit<ObjectNode>> hits = searchResponse.hits().hits();
+        SearchHit[] hits = searchResponse.getHits().getHits();
 
-        List<Map<String, Object>> list = new ArrayList<>(hits.size());
-        for (Hit<ObjectNode> hit : hits) {
-            ObjectNode node = hit.source();
-            Map<String, Object> map = objectNode2Map(hit.index(), node);
-            map.put("index", hit.index());
-            map.put("highlight", hit.highlight());
-            map.put("innerHits", hit.innerHits());
+        List<Map<String, Object>> list = new ArrayList<>(hits.length);
+        for (SearchHit hit : hits) {
+            Map<String, Object> map = hit.getSourceAsMap();
+            //Map<String, Object> map = objectNode2Map(hit.getIndex(), node);
+            map.put("index", hit.getIndex());
+            map.put("highlight", hit.getHighlightFields());
+            map.put("innerHits", hit.getInnerHits());
             list.add(map);
 
             //输出结果日志

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

@@ -1,12 +1,12 @@
 package com.bowintek.practice.services.service;
 
-import co.elastic.clients.elasticsearch.indices.AnalyzeResponse;
 import com.bowintek.practice.model.SrTempData;
 import com.bowintek.practice.vo.Analyze.ComparisonResult;
 import com.bowintek.practice.vo.SaerchtempVo;
 import com.bowintek.practice.vo.temp.TempObjectModel;
 import com.bowintek.practice.vo.temp.TempSaveResult;
 import com.github.pagehelper.PageInfo;
+import org.elasticsearch.client.indices.AnalyzeResponse;
 
 import java.util.HashMap;
 import java.util.List;

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

@@ -1,7 +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;
 

+ 0 - 1
src/main/java/com/bowintek/practice/services/service/QueryLogService.java

@@ -1,6 +1,5 @@
 package com.bowintek.practice.services.service;
 
-import co.elastic.clients.elasticsearch.indices.AnalyzeResponse;
 import com.bowintek.practice.vo.Analyze.ComparisonResult;
 import com.bowintek.practice.vo.EsQueryLogVo;
 import com.github.pagehelper.PageInfo;

+ 84 - 0
src/main/java/com/bowintek/practice/util/HwRestClientUtils.java

@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
+ */
+
+package com.bowintek.practice.util;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.elasticsearch.client.RequestOptions;
+import org.elasticsearch.client.RestHighLevelClient;
+import org.elasticsearch.client.indices.GetIndexRequest;
+import org.elasticsearch.hwclient.HwRestClient;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * 客户端工具
+ *
+ * @since 2020-09-30
+ */
+public class HwRestClientUtils {
+    private static final Logger LOG = LogManager.getLogger(HwRestClientUtils.class);
+    /**
+     * 配置文件路径位置
+     */
+    private static final int CONFIG_PATH_ARGUMENT_INDEX = 0;
+
+    /**
+     * 获取HwRestClient
+     *
+     * @param args 配置参数
+     * @return HwRestClient
+     */
+    public static HwRestClient getHwRestClient(String[] args) {
+        HwRestClient hwRestClient;
+        if (args == null
+                || args.length < 1
+                || args[CONFIG_PATH_ARGUMENT_INDEX] == null
+                || args[CONFIG_PATH_ARGUMENT_INDEX].isEmpty()) {
+            hwRestClient = new HwRestClient();
+        } else {
+            String configPath = args[CONFIG_PATH_ARGUMENT_INDEX];
+            File configFile = new File(configPath);
+            if (configFile.exists()) {
+                if (configFile.isDirectory()) {
+                    hwRestClient = new HwRestClient(configPath);
+                } else {
+                    try {
+                        hwRestClient =
+                                new HwRestClient(
+                                        configFile
+                                                .getCanonicalPath()
+                                                .substring(
+                                                        0,
+                                                        configFile.getCanonicalPath().lastIndexOf(File.separator) + 1),
+                                        configFile.getName());
+                    } catch (IOException e) {
+                        hwRestClient = new HwRestClient();
+                    }
+                }
+            } else {
+                hwRestClient = new HwRestClient();
+            }
+        }
+        return hwRestClient;
+    }
+
+    /**
+     * high level 客户端,判断索引是否存在
+     *
+     * @param highLevelClient high level 客户端
+     * @return 索引是否存在
+     */
+    public static boolean isExistIndexForHighLevel(RestHighLevelClient highLevelClient, String indexName) {
+        GetIndexRequest isExistsRequest = new GetIndexRequest(indexName);
+        try {
+            return highLevelClient.indices().exists(isExistsRequest, RequestOptions.DEFAULT);
+        } catch (IOException e) {
+            LOG.error("Judge index exist {} failed", indexName, e);
+        }
+        return false;
+    }
+}

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

@@ -1,6 +1,5 @@
 package com.bowintek.practice.vo.Analyze;
 
-import co.elastic.clients.elasticsearch._types.SortOrder;
 import lombok.Data;
 
 import java.util.List;

+ 52 - 41
src/main/resources/META-INF/MANIFEST.MF

@@ -1,44 +1,55 @@
 Manifest-Version: 1.0
 Main-Class: com.bowintek.practice.PracticeApplication
-Class-Path: spring-boot-starter-web-2.7.2.jar tomcat-embed-el-9.0.65.jar
-  commons-codec-1.15.jar jul-to-slf4j-1.7.36.jar postgresql-42.3.6.jar n
- etty-transport-4.1.79.Final.jar mybatis-spring-boot-starter-2.2.2.jar c
- ommons-pool2-2.11.1.jar poi-ooxml-schemas-4.0.0.jar mybatis-spring-2.0.
- 7.jar spring-boot-starter-json-2.7.2.jar spring-beans-5.3.22.jar spring
- -oxm-5.3.22.jar elasticsearch-java-8.11.1.jar elasticsearch-rest-client
- -7.17.4.jar spring-jcl-5.3.22.jar lombok-1.18.20.jar spring-data-keyval
- ue-2.7.2.jar netty-resolver-4.1.79.Final.jar lucene-sandbox-4.7.2.jar n
- etty-handler-4.1.79.Final.jar curvesapi-1.04.jar commons-beanutils-1.9.
- 4.jar jackson-datatype-jdk8-2.13.3.jar tomcat-embed-core-9.0.65.jar jak
- arta.annotation-api-1.3.5.jar spring-boot-devtools-2.7.2.jar netty-code
- c-4.1.79.Final.jar logback-classic-1.2.11.jar commons-compress-1.18.jar
-  mybatis-3.5.9.jar pagehelper-5.3.1.jar aspectjrt-1.9.7.jar lettuce-cor
- e-6.1.9.RELEASE.jar druid-1.2.11.jar pagehelper-spring-boot-starter-1.4
- .3.jar commons-collections4-4.2.jar jackson-datatype-jsr310-2.13.3.jar 
- spring-expression-5.3.22.jar mysql-connector-java-8.0.29.jar httpcore-4
- .4.15.jar jackson-module-parameter-names-2.13.3.jar spring-web-5.3.22.j
- ar lucene-queries-4.7.2.jar fastjson-1.2.47.jar httpasyncclient-4.1.5.j
- ar spring-context-support-5.3.22.jar aspectjweaver-1.9.7.jar lucene-que
- ryparser-4.7.2.jar spring-tx-5.3.22.jar spring-boot-starter-jdbc-2.7.2.
- jar netty-buffer-4.1.79.Final.jar HikariCP-4.0.3.jar spring-core-5.3.22
- .jar opentelemetry-api-1.29.0.jar spring-data-redis-2.7.2.jar spring-bo
- ot-starter-logging-2.7.2.jar mybatis-spring-boot-autoconfigure-2.2.2.ja
- r poi-4.0.0.jar lucene-analyzers-common-4.7.2.jar commons-collections-3
- .2.2.jar httpclient-4.5.9.jar commons-logging-1.2.jar poi-ooxml-4.0.0.j
- ar log4j-api-2.17.2.jar jsr305-3.0.2.jar lucene-core-4.7.2.jar spring-b
- oot-starter-2.7.2.jar spring-jdbc-5.3.22.jar spring-data-commons-2.7.2.
- jar netty-common-4.1.79.Final.jar commons-net-3.6.jar spring-webmvc-5.3
- .22.jar ikanalyzer-2012_u6.jar jakarta.json-api-2.0.1.jar druid-spring-
- boot-starter-1.2.11.jar spring-boot-starter-tomcat-2.7.2.jar checker-qu
- al-3.5.0.jar httpcore-nio-4.4.15.jar spring-boot-2.7.2.jar jackson-core
- -2.13.3.jar logback-core-1.2.11.jar log4j-to-slf4j-2.17.2.jar spring-bo
- ot-starter-data-redis-2.7.2.jar pagehelper-spring-boot-autoconfigure-1.
- 4.3.jar poi-scratchpad-4.0.0.jar jackson-databind-2.13.3.jar snakeyaml-
- 1.30.jar slf4j-api-1.7.36.jar spring-boot-autoconfigure-2.7.2.jar netty
- -transport-native-unix-common-4.1.79.Final.jar aspose-cells-18.9.jar as
- pose-words-15.8.0-jdk16.jar jsqlparser-4.2.jar parsson-1.0.0.jar xmlbea
- ns-3.0.1.jar commons-lang3-3.5.jar spring-aop-5.3.22.jar tomcat-embed-w
- ebsocket-9.0.65.jar spring-context-5.3.22.jar opentelemetry-context-1.2
- 9.0.jar jackson-annotations-2.13.3.jar java-jwt-3.9.0.jar json-20190722
- .jar reactive-streams-1.0.4.jar reactor-core-3.4.21.jar
+Class-Path: commons-lang3-3.5.jar commons-pool2-2.11.1.jar hppc-0.8.1.ja
+ r lucene-analyzers-common-8.7.0.jar lang-mustache-client-7.10.2-h0.cbu.
+ mrs.320.r33.jar tomcat-embed-core-9.0.65.jar poi-4.0.0.jar snakeyaml-1.
+ 30.jar netty-common-4.1.79.Final.jar spring-data-redis-2.7.2.jar fastjs
+ on-1.2.47.jar spring-data-keyvalue-2.7.2.jar tomcat-embed-el-9.0.65.jar
+  log4j-api-2.17.2.jar elasticsearch-7.10.2-h0.cbu.mrs.320.r33.jar lucen
+ e-join-8.7.0.jar spring-boot-starter-web-2.7.2.jar netty-resolver-4.1.7
+ 9.Final.jar json-20190722.jar jul-to-slf4j-1.7.36.jar elasticsearch-res
+ t-high-level-client-7.10.2-h0.cbu.mrs.320.r33.jar httpcore-4.4.15.jar i
+ kanalyzer-2012_u6.jar spring-expression-5.3.22.jar lucene-memory-8.7.0.
+ jar spring-boot-starter-logging-2.7.2.jar checker-qual-3.5.0.jar lombok
+ -1.18.20.jar elasticsearch-java-8.11.1.jar jackson-annotations-2.13.3.j
+ ar opendistro-sql-jdbc-1.13.0.0-h0.cbu.mrs.320.r33.jar pagehelper-5.3.1
+ .jar compiler-0.9.6.jar mybatis-3.5.9.jar netty-transport-4.1.79.Final.
+ jar elasticsearch-x-content-7.10.2-h0.cbu.mrs.320.r33.jar commons-codec
+ -1.15.jar netty-handler-4.1.79.Final.jar druid-spring-boot-starter-1.2.
+ 11.jar spring-boot-autoconfigure-2.7.2.jar slf4j-api-1.7.36.jar elastic
+ search-secure-sm-7.10.2-h0.cbu.mrs.320.r33.jar spring-jdbc-5.3.22.jar c
+ ommons-logging-1.2.jar lucene-queryparser-4.7.2.jar parsson-1.0.0.jar c
+ urvesapi-1.04.jar jakarta.annotation-api-1.3.5.jar spring-oxm-5.3.22.ja
+ r spring-jcl-5.3.22.jar pagehelper-spring-boot-autoconfigure-1.4.3.jar 
+ lucene-core-8.7.0.jar aspectjweaver-1.9.7.jar httpclient-4.5.9.jar open
+ telemetry-context-1.29.0.jar opentelemetry-api-1.29.0.jar spring-beans-
+ 5.3.22.jar pagehelper-spring-boot-starter-1.4.3.jar spring-boot-starter
+ -jdbc-2.7.2.jar lucene-suggest-8.7.0.jar httpcore-nio-4.4.15.jar jackso
+ n-core-2.13.3.jar netty-codec-4.1.79.Final.jar reactive-streams-1.0.4.j
+ ar elasticsearch-core-7.10.2-h0.cbu.mrs.320.r33.jar spring-tx-5.3.22.ja
+ r lettuce-core-6.1.9.RELEASE.jar httpasyncclient-4.1.5.jar aspectjrt-1.
+ 9.7.jar tomcat-embed-websocket-9.0.65.jar spring-boot-2.7.2.jar lucene-
+ highlighter-8.7.0.jar spring-web-5.3.22.jar logback-core-1.2.11.jar jsq
+ lparser-4.2.jar netty-buffer-4.1.79.Final.jar rank-eval-client-7.10.2-h
+ 0.cbu.mrs.320.r33.jar druid-1.2.11.jar spring-boot-starter-json-2.7.2.j
+ ar spring-core-5.3.22.jar netty-transport-native-unix-common-4.1.79.Fin
+ al.jar logback-classic-1.2.11.jar HikariCP-4.0.3.jar reactor-core-3.4.2
+ 1.jar spring-boot-devtools-2.7.2.jar spring-aop-5.3.22.jar log4j-to-slf
+ 4j-2.17.2.jar ion-java-1.0.2.jar lucene-sandbox-4.7.2.jar spring-data-c
+ ommons-2.7.2.jar spring-boot-starter-tomcat-2.7.2.jar poi-ooxml-schemas
+ -4.0.0.jar commons-beanutils-1.9.4.jar lucene-queries-8.7.0.jar jakarta
+ .json-api-2.0.1.jar jackson-datatype-jsr310-2.13.3.jar commons-collecti
+ ons-3.2.2.jar aspose-cells-18.9.jar joda-time-2.10.4.jar jackson-module
+ -parameter-names-2.13.3.jar spring-boot-starter-2.7.2.jar java-jwt-3.9.
+ 0.jar spring-boot-starter-data-redis-2.7.2.jar jsr305-3.0.2.jar elastic
+ search-geo-7.10.2-h0.cbu.mrs.320.r33.jar poi-scratchpad-4.0.0.jar sprin
+ g-webmvc-5.3.22.jar poi-ooxml-4.0.0.jar mybatis-spring-boot-autoconfigu
+ re-2.2.2.jar mysql-connector-java-8.0.29.jar mapper-extras-client-7.10.
+ 2-h0.cbu.mrs.320.r33.jar spring-context-support-5.3.22.jar spring-conte
+ xt-5.3.22.jar aspose-words-15.8.0-jdk16.jar jackson-databind-2.13.3.jar
+  mybatis-spring-2.0.7.jar commons-compress-1.18.jar aws-java-sdk-core-1
+ .11.452.jar commons-net-3.6.jar commons-collections4-4.2.jar elasticsea
+ rch-rest-client-7.10.2-h0.cbu.mrs.320.r33.jar mybatis-spring-boot-start
+ er-2.2.2.jar xmlbeans-3.0.1.jar jackson-datatype-jdk8-2.13.3.jar postgr
+ esql-42.3.6.jar
 

+ 2 - 2
src/main/resources/application.yml

@@ -91,7 +91,7 @@ elasticsearch:
   port: 9200
   user: hyzc_default
   password: BBBBAAAAYwAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAACdw1GRyLaxi89wQGFTEmBgMy+ly28Z2loKSoRaEAAAAAAQAAAQAAAAAAAAAjtQGieqqki1A4xVkfYeZGms/klXk6kZQjTO898+I61DTughO/3UUIAVjdcN3hPIPmqPhra2Y0p8gFNG/cC3PiN677bQ==
-  schema: https
+  schema: http
   krb5: E:\es_pro\out\config\krb5.conf
   jaas: E:\es_pro\out\config\es.pfl.jaas.conf
   keytab: E:\es_pro\out\config\user.keytab
@@ -101,7 +101,7 @@ elasticsearch:
   maxConnectNum: 100
   maxConnectPerRoute: 100
   preStr: es_
-
+  isDev: 1
 
 logging:
   config: classpath:logback-spring.xml

+ 2 - 2
target/classes/application.yml

@@ -91,7 +91,7 @@ elasticsearch:
   port: 9200
   user: hyzc_default
   password: BBBBAAAAYwAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAACdw1GRyLaxi89wQGFTEmBgMy+ly28Z2loKSoRaEAAAAAAQAAAQAAAAAAAAAjtQGieqqki1A4xVkfYeZGms/klXk6kZQjTO898+I61DTughO/3UUIAVjdcN3hPIPmqPhra2Y0p8gFNG/cC3PiN677bQ==
-  schema: https
+  schema: http
   krb5: E:\es_pro\out\config\krb5.conf
   jaas: E:\es_pro\out\config\es.pfl.jaas.conf
   keytab: E:\es_pro\out\config\user.keytab
@@ -101,7 +101,7 @@ elasticsearch:
   maxConnectNum: 100
   maxConnectPerRoute: 100
   preStr: es_
-
+  isDev: 1
 
 logging:
   config: classpath:logback-spring.xml

+ 10 - 8
vue/src/views/esdomain/result.vue

@@ -40,7 +40,8 @@
       <div class="search-container">
         <div class="search-body">
           <div class="search-order">
-            <div @click="pageState.orderBy='';pageState.orderType='';loadData();" :style="{ color: pageState.orderBy==''? '#1890FF':'' }">
+            <div @click="pageState.orderBy='';pageState.orderType='';loadData();"
+                 :style="{ color: pageState.orderBy==''? '#1890FF':'' }">
               综合排序
             </div>
             <div>创建时间
@@ -58,8 +59,9 @@
           <template v-for="(it) in dataList">
             <div>
               <div class="search-body-title">
-                井名:<span v-html="it.well_common_name"></span> <p @click="showWell(it.well_id)">
-                <img src="~@/assets/images/info.png" width="18" height="16"/>查看井基础信息</p>
+                井名:<span v-html="it.well_common_name"></span>
+                <p @click="showWell(it.well_id)">
+                  <img src="~@/assets/images/info.png" width="18" height="16"/>查看井基础信息</p>
               </div>
               <div class="search-body-item">
                 <component is="cycleView" :indexSetting="it.indexSetting" :data="it" :key="it.key"></component>
@@ -205,12 +207,12 @@ export default defineComponent({
     const showWell = (well_id) => {
       tabsViewStore.addTabByPath('/wellinfo/detail', {id: well_id});
     }
-    const redirectWell=(well_id)=>
-    {
+    const redirectWell = (well_id) => {
       tabsViewStore.addTabByPath('/domain/well', {id: well_id});
     }
 
     function onQuery(args) {
+      pageParams.value.current = 1;
       queryObject.value = args;
       loadData();
     }
@@ -218,8 +220,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;
+      queryObject.value.orderType = pageState.orderType;
+      queryObject.value.orderBy = pageState.orderBy;
 
       pageState.loading = true;
       postData('esquery/Query', queryObject.value).then(result => {
@@ -289,7 +291,7 @@ export default defineComponent({
       let params = localStorage.getItem("queryObject");
       if (params != null) {
         this.queryObject = JSON.parse(params);
-        this.queryObject.formState.showMoreQuery=false;
+        this.queryObject.formState.showMoreQuery = false;
         this.loadData();
       }
     });